xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

采用C/S模式,完成一前臺(服務器)對多客服端通訊,用Mysql數據庫保存信息; 主要技術: 1.采用TCP/IP協議,容器完成服務端與多客戶端的鏈接 服務端: server=new QTcpServer(this);建立端口 server->listen(QHostAddress::Any,PORT);監聽端口 connect(server,SIGNAL(newConnection()),this,SLOT(accpetConnection()));等待用戶鏈接 QTcpSocket* temp = server->nextPendingConnection();建立鏈接 client.push_back(temp);用戶壓棧 connect(temp,SIGNAL(readyRead()),this,SLOT(readData()));當端口有數據就讀 讀數據時先用迭代器遍歷容器找到發送信息的客戶端,再解析數據并響應 客戶端: client=new QTcpSocket(this);建立端口 client->connectToHost(IP,PORT);鏈接主機 connect(client,SIGNAL(readyRead()),this,SLOT(readData()));端口有數據就讀 2.界面布局 服務器 a.主菜單,預訂,開臺,換臺,電子賬單功能項采用QToolButton文字置于圖片下面,水平布局 b.當前餐臺信息與總餐臺狀態信息用QLabel垂直布局放于主窗體左側 c.餐臺信息采用QGraphicsView+QGraphicsScene+QGraphicsItem布局,view與item需要重寫自己的類,Item包括圖片與文本信息;將Item放入墻紙scene中,墻紙scene貼到墻view上完成顯示。 客戶端 a.選擇桌號與人數用QLabel,對應的下拉選項用QComboBox,確認,呼叫與結賬功能用QToolButton,這些控件水平布局放置于窗體最上方 b.左側用QTabWidget其中加入特價菜單與我的菜單兩個子窗體 c.中間為QGraphicsView+QGraphicsScene+QGraphicsItem布局,布局菜單圖片與價格名稱,菜單信息服務器發送至客戶端與客戶端的圖片匹配起來。 d.右側為菜單類型分類按鍵,采用垂直布局 3.信號與槽機制的運用 a.預訂,開臺,換臺功能的實現:點擊對應的按鈕觸發clicked()信號,與之對應的槽函數中QToolButton *btn = (QToolButton *)sender();區分信號源,彈出對應的子窗體讓用戶輸入相應信息,按確定按鈕修改SQL對應Table內容然后發送輸入信息信號,主窗體接受到信號調用槽函數(相應窗體成員調用其布局函數重布局)重新布局整個界面(餐臺信息與左側總餐臺狀態同時更新) b.鼠標懸浮于餐臺信息Item時圖片放大:改寫了QGraphicsSceneMouseEvent事件實現 c.主菜單與電子賬單的顯示采用QSqlTableModel+QTableView加載整個SQL中相應的Table顯示Table內容

資源截圖

代碼片段和文件信息

#include?
#include?ject>
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include
#include
#include?
#include?
#include?
#include?
#include?
#include
#include
#include
#includese>
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define?PORT?8808



QSqlDatabase?getDB(QString?database)
{
????QSqlDatabase?db;
????if(QSqlDatabase::contains(“mysql“))
????{
????????db=QSqlDatabase::database(“mysql“);
????}
????else
????{
????db?=?QSqlDatabase::addDatabase(“QMYSQL““mysql“);
????db.setHostName(“LocalHost“);
????db.setDatabaseName(database);qDebug()<<“Open?database?:“<se;
????db.setUserName(“root“);
????db.setPassword(“admin“);
????}
????return?db;
}
void?set_sql(void)
{
????QSqlDatabase?db?=?getDB(“ordersystem“);
????if(db.open())
????{
????qDebug()<<“0“<
????QString?op?=?“use?ordersystem“;
????QSqlQuery?query(db);
????query.exec(op);
????op?=?“create?table?menu(id?int(10)?primary?key?not?nullname?varchar(20)price?int(10)num?intsell?intstate?intsprice?inttype?int)“;
????query.exec(op);
????qDebug()<<“create?table:menu“;
????db.close();
????}
????else
????{
????????qDebug()<<“error“;
????}
}
void?display_menu(void)
{
????QSqlDatabase?db?=?getDB(“ordersystem“);
????if(db.open())
????{
????qDebug()<<“1“<????}
????QSqlTableModel?*model?=?new?QSqlTableModel(0db);
????model->setTable(“menu“);
????model->setEditStrategy(QSqlTableModel::OnManualSubmit);
????model->select();
????model->setHeaderData(0?Qt::HorizontalQobject::tr(“id“));
????model->setHeaderData(1?Qt::HorizontalQobject::tr(“菜名“));
????model->setHeaderData(2?Qt::HorizontalQobject::tr(“單價“));
????model->setHeaderData(3?Qt::HorizontalQobject::tr(“可供數量“));
????model->setHeaderData(4?Qt::HorizontalQobject::tr(“已售數量“));
????model->setHeaderData(5?Qt::HorizontalQobject::tr(“供應狀態“));
????model->setHeaderData(6?Qt::HorizontalQobject::tr(“是否特價“));
????model->setHeaderData(7?Qt::HorizontalQobject::tr(“種類“));
????QTableView?*view?=?new?QTableView();view->setModel(model);
????view->hideColumn(0);?//?don‘t?show?the?ID
????view->show();
????db.close();
}
void?display_elec()
{
????QSqlDatabase?db?=?getDB(“ordersystem“);qDebug()<????QSqlTableModel?*model?=?new?QSqlTableModel(0db);
????model->setTable(“bill“);
????model->setEditStrategy(QSqlTableModel::OnManualSubmit);
????model->select();
????model->setHeaderData(0?Qt::HorizontalQobject::tr(“??日??期??“));
????model->setHeaderData(1?Qt::Horizon

評論

共有 條評論