Qt -2:通過程式設計完成一個測試介面
阿新 • • 發佈:2018-12-10
一 目的:
這幾天在學習QT,打算通過程式設計的方式完成如下測試介面。由於才開始寫,程式碼還不夠簡潔,過於冗餘。但先實現功能吧,後續再改善。
二 我寫的介面如下,暫時還有些差距,不過這都是暫時的。
三 流程:
1 檔案 --> 新建檔案或專案-->(專案-->應用程式)Qt Gui應用-->選擇-->下一步-->下一步-->(基類選擇)QWidget,並取消建立介面後面的√-->下一步-->完成
2 程式設計思想:
其實用程式碼來寫介面不難,只是你需要清楚其間的規則。比如,我在寫這個介面的時候就是按如下的佈局來寫的。在寫左上角的按鈕組時,嘗試了很多方法:比如建立一個Splitter的主介面,然後將主介面左邊放置GridLayout屬性或QHBoxLayout
或QVBoxLayout的Layout,都不行。最後才發現可以將左邊介面設定為Splitter屬性,這樣就沒問題了。
3 具體程式碼:其他檔案不用改,只需要main.cpp中寫如下程式碼:
main.cpp: #include "widget.h" #include <QApplication> #include <QLayout> #include <QLabel> #include <QSplitter> #include <QGridLayout> #include <QComboBox> #include <QPushButton> #include <QListWidget> #include <QTableWidget> #include <QGroupBox> #include <QDebug> #include <QStackedWidget> #include <QButtonGroup> #include <QTextBrowser> #include <QStringList> #include <QHeaderView> int main(int argc, char *argv[]) { QApplication a(argc, argv); /************************************************主介面整體屬性*******************************************************/ QSplitter *splittermain = new QSplitter(Qt::Horizontal,0); //水平分割為兩欄:左邊一欄為一個垂直分割視窗splittermain1 // 右邊一欄為一個ADtableWidget splittermain->setWindowTitle("APP-V1.0 20180915"); //主介面名稱 splittermain->resize(1000,618); //固定主介面大小 QSplitter *splittermain1 = new QSplitter(Qt::Vertical,0); //主介面左邊放一個垂直分割視窗splittermain1 splittermain->addWidget(splittermain1); QTableWidget *righttablewidget = new QTableWidget(splittermain); //在主介面右邊插入一個ADtableWidget QSplitter *toplayout = new QSplitter(Qt::Horizontal,splittermain1); //splittermain1又分為3欄 QSplitter *toplayout1 = new QSplitter(Qt::Vertical,toplayout); QSplitter *toplayout2 = new QSplitter(Qt::Vertical,toplayout); QSplitter *toplayout3 = new QSplitter(Qt::Vertical,toplayout); /************************************************主介面整體屬性*******************************************************/ /**************************************************按鈕組屬性********************************************************/ QComboBox *com = new QComboBox(); com->addItem(" COM1"); com->addItem(" COM2"); com->setFixedSize(120,30); // com->view()->model()->item(positon)->setTextAlignment(Qt::AlignCenter); // com->view()->model()->itemData(1)->setTextAlignment(Qt::AlignCenter); QPushButton *refresh = new QPushButton("refresh"); refresh->setFixedSize(120,30); QPushButton *comtest = new QPushButton("comtest"); comtest->setFixedSize(120,30); QPushButton *comlink = new QPushButton("comlink"); comlink->setFixedSize(120,30); QPushButton *linkbreak = new QPushButton("linkbreak"); linkbreak->setFixedSize(120,30); QPushButton *autotest = new QPushButton("autotest"); autotest->setFixedSize(120,100); QPushButton *poweron = new QPushButton("poweron"); poweron->setFixedSize(120,30); QPushButton *powerdown = new QPushButton("powerdown"); powerdown->setFixedSize(120,30); QPushButton *iotest = new QPushButton("iotest"); iotest->setFixedSize(120,30); QPushButton *adtest = new QPushButton("adtest"); adtest->setFixedSize(120,30); toplayout1->addWidget(com); toplayout1->addWidget(comlink); toplayout1->addWidget(poweron); toplayout1->addWidget(iotest); toplayout2->addWidget(refresh); toplayout2->addWidget(linkbreak); toplayout2->addWidget(powerdown); toplayout2->addWidget(adtest); toplayout3->addWidget(comtest); toplayout3->addWidget(autotest); /**************************************************按鈕組屬性*********************************************************/ /************************************************IO表格整體屬性*******************************************************/ QTableWidget *middletablewidget = new QTableWidget(splittermain1); middletablewidget->setFixedHeight(300); middletablewidget->setRowCount(10); // IO table總行數 middletablewidget->setColumnCount(3); // IO table總列數 middletablewidget->verticalHeader()->setResizeMode(QHeaderView::Stretch); //錶行隨著表格變化而自適應變化 middletablewidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch); //表列隨著表格變化而自適應變化 /************************************************IO表格整體屬性*******************************************************/ /*************************************************IO表格內容*********************************************************/ middletablewidget->setHorizontalHeaderLabels(QStringList()<<"Io"<<"Sample Times"<<"Error Time"); middletablewidget->setVerticalHeaderLabels(QStringList()<<"Io0" <<"Io1" <<"Io2" <<"Io3" <<"Io4" <<"Io5" <<"Io6" <<"Io7" <<"Io8" <<"Io9"); QTableWidgetItem *Item0 = new QTableWidgetItem("UH_DE"); QTableWidgetItem *Item1 = new QTableWidgetItem("UL_DE"); QTableWidgetItem *Item2 = new QTableWidgetItem("VH_DE"); QTableWidgetItem *Item3 = new QTableWidgetItem("VL_DE"); QTableWidgetItem *Item4 = new QTableWidgetItem("WH_DE"); QTableWidgetItem *Item5 = new QTableWidgetItem("WL_DE"); QTableWidgetItem *Item6 = new QTableWidgetItem("PB_DE"); QTableWidgetItem *Item7 = new QTableWidgetItem("VCE_DE"); QTableWidgetItem *Item8 = new QTableWidgetItem("FAN_DE"); QTableWidgetItem *Item9 = new QTableWidgetItem("SOFT_DE"); middletablewidget->setItem(0,0,Item0); middletablewidget->setItem(1,0,Item1); middletablewidget->setItem(2,0,Item2); middletablewidget->setItem(3,0,Item3); middletablewidget->setItem(4,0,Item4); middletablewidget->setItem(5,0,Item5); middletablewidget->setItem(6,0,Item6); middletablewidget->setItem(7,0,Item7); middletablewidget->setItem(8,0,Item8); middletablewidget->setItem(9,0,Item9); QTableWidgetItem *Item10 = new QTableWidgetItem("100"); QTableWidgetItem *Item11 = new QTableWidgetItem("100"); QTableWidgetItem *Item12 = new QTableWidgetItem("100"); QTableWidgetItem *Item13 = new QTableWidgetItem("100"); QTableWidgetItem *Item14 = new QTableWidgetItem("100"); QTableWidgetItem *Item15 = new QTableWidgetItem("100"); QTableWidgetItem *Item16 = new QTableWidgetItem("2"); QTableWidgetItem *Item17 = new QTableWidgetItem("3"); QTableWidgetItem *Item18 = new QTableWidgetItem("2"); QTableWidgetItem *Item19 = new QTableWidgetItem("2"); middletablewidget->setItem(0,1,Item10); middletablewidget->setItem(1,1,Item11); middletablewidget->setItem(2,1,Item12); middletablewidget->setItem(3,1,Item13); middletablewidget->setItem(4,1,Item14); middletablewidget->setItem(5,1,Item15); middletablewidget->setItem(6,1,Item16); middletablewidget->setItem(7,1,Item17); middletablewidget->setItem(8,1,Item18); middletablewidget->setItem(9,1,Item19); Item0->setTextAlignment(Qt::AlignCenter); //居中顯示 Item1->setTextAlignment(Qt::AlignCenter); Item2->setTextAlignment(Qt::AlignCenter); Item3->setTextAlignment(Qt::AlignCenter); Item4->setTextAlignment(Qt::AlignCenter); Item5->setTextAlignment(Qt::AlignCenter); Item6->setTextAlignment(Qt::AlignCenter); Item7->setTextAlignment(Qt::AlignCenter); Item8->setTextAlignment(Qt::AlignCenter); Item9->setTextAlignment(Qt::AlignCenter); /*************************************************IO表格內容*********************************************************/ /*************************************************AD表格整體屬性******************************************************/ righttablewidget->setRowCount(16); // IO table總行數 righttablewidget->setColumnCount(5); // IO table總列數 righttablewidget->verticalHeader()->setResizeMode(QHeaderView::Stretch); //錶行隨著表格變化而自適應變化 righttablewidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch); //表列隨著表格變化而自適應變化 /*************************************************AD表格整體屬性******************************************************/ QTextBrowser *bottomtextbrowser = new QTextBrowser(splittermain1); /***************************************************AD表格內容*******************************************************/ righttablewidget->setHorizontalHeaderLabels(QStringList()<<"Analog"<<"Min"<<"Max"<<"Sample"<<"Error Marks"); righttablewidget->setVerticalHeaderLabels(QStringList() <<"AI1" <<"AI2" <<"AI3" <<"AI4" <<"AI5" <<"AI6" <<"AI7" <<"AI8" <<"AI9" <<"AI10" <<"AI11" <<"AI12" <<"AI13" <<"AI14" <<"AI15" <<"AI16"); QTableWidgetItem *Item20 = new QTableWidgetItem("AD_+LD"); QTableWidgetItem *Item21 = new QTableWidgetItem("AD_-LD"); QTableWidgetItem *Item22 = new QTableWidgetItem("AD_VPN"); QTableWidgetItem *Item23 = new QTableWidgetItem("AD_+5VD"); QTableWidgetItem *Item24 = new QTableWidgetItem("AD_+15VD"); QTableWidgetItem *Item25 = new QTableWidgetItem("AD_-15VD"); QTableWidgetItem *Item26 = new QTableWidgetItem("AD_24V"); QTableWidgetItem *Item27 = new QTableWidgetItem("AD_24VD"); QTableWidgetItem *Item28 = new QTableWidgetItem("AD_+U"); QTableWidgetItem *Item29 = new QTableWidgetItem("AD_U5V"); QTableWidgetItem *Item30 = new QTableWidgetItem("AD_-U"); QTableWidgetItem *Item31 = new QTableWidgetItem("AD_+W"); QTableWidgetItem *Item32 = new QTableWidgetItem("AD_W5V"); QTableWidgetItem *Item33 = new QTableWidgetItem("AD_-W"); QTableWidgetItem *Item34 = new QTableWidgetItem("AD_+V"); QTableWidgetItem *Item35 = new QTableWidgetItem("AD_-V"); righttablewidget->setItem(0,0,Item20); righttablewidget->setItem(1,0,Item21); righttablewidget->setItem(2,0,Item22); righttablewidget->setItem(3,0,Item23); righttablewidget->setItem(4,0,Item24); righttablewidget->setItem(5,0,Item25); righttablewidget->setItem(6,0,Item26); righttablewidget->setItem(7,0,Item27); righttablewidget->setItem(8,0,Item28); righttablewidget->setItem(9,0,Item29); righttablewidget->setItem(10,0,Item30); righttablewidget->setItem(11,0,Item31); righttablewidget->setItem(12,0,Item32); righttablewidget->setItem(13,0,Item33); righttablewidget->setItem(14,0,Item34); righttablewidget->setItem(15,0,Item35); QTableWidgetItem *Item40 = new QTableWidgetItem("13.5"); QTableWidgetItem *Item41 = new QTableWidgetItem("-7.5"); QTableWidgetItem *Item42 = new QTableWidgetItem("7.4"); QTableWidgetItem *Item43 = new QTableWidgetItem("4.5"); QTableWidgetItem *Item44 = new QTableWidgetItem("13.5"); QTableWidgetItem *Item45 = new QTableWidgetItem("-16.5"); QTableWidgetItem *Item46 = new QTableWidgetItem("23"); QTableWidgetItem *Item47 = new QTableWidgetItem("23"); QTableWidgetItem *Item48 = new QTableWidgetItem("13.5"); QTableWidgetItem *Item49 = new QTableWidgetItem("4.5"); QTableWidgetItem *Item50 = new QTableWidgetItem("-12"); QTableWidgetItem *Item51 = new QTableWidgetItem("13.5"); QTableWidgetItem *Item52 = new QTableWidgetItem("4.5"); QTableWidgetItem *Item53 = new QTableWidgetItem("-8.2"); QTableWidgetItem *Item54 = new QTableWidgetItem("13.5"); QTableWidgetItem *Item55 = new QTableWidgetItem("-8.2"); righttablewidget->setItem(0,1,Item40); righttablewidget->setItem(1,1,Item41); righttablewidget->setItem(2,1,Item42); righttablewidget->setItem(3,1,Item43); righttablewidget->setItem(4,1,Item44); righttablewidget->setItem(5,1,Item45); righttablewidget->setItem(6,1,Item46); righttablewidget->setItem(7,1,Item47); righttablewidget->setItem(8,1,Item48); righttablewidget->setItem(9,1,Item49); righttablewidget->setItem(10,1,Item50); righttablewidget->setItem(11,1,Item51); righttablewidget->setItem(12,1,Item52); righttablewidget->setItem(13,1,Item53); righttablewidget->setItem(14,1,Item54); righttablewidget->setItem(15,1,Item55); QTableWidgetItem *Item60 = new QTableWidgetItem("17"); QTableWidgetItem *Item61 = new QTableWidgetItem("-6"); QTableWidgetItem *Item62 = new QTableWidgetItem("9.7"); QTableWidgetItem *Item63 = new QTableWidgetItem("5.5"); QTableWidgetItem *Item64 = new QTableWidgetItem("16.5"); QTableWidgetItem *Item65 = new QTableWidgetItem("-13.5"); QTableWidgetItem *Item66 = new QTableWidgetItem("27"); QTableWidgetItem *Item67 = new QTableWidgetItem("27"); QTableWidgetItem *Item68 = new QTableWidgetItem("16.5"); QTableWidgetItem *Item69 = new QTableWidgetItem("5.5"); QTableWidgetItem *Item70 = new QTableWidgetItem("-6.5"); QTableWidgetItem *Item71 = new QTableWidgetItem("16.5"); QTableWidgetItem *Item72 = new QTableWidgetItem("5.5"); QTableWidgetItem *Item73 = new QTableWidgetItem("-6.5"); QTableWidgetItem *Item74 = new QTableWidgetItem("16.5"); QTableWidgetItem *Item75 = new QTableWidgetItem("-6.5"); righttablewidget->setItem(0,2,Item60); righttablewidget->setItem(1,2,Item61); righttablewidget->setItem(2,2,Item62); righttablewidget->setItem(3,2,Item63); righttablewidget->setItem(4,2,Item64); righttablewidget->setItem(5,2,Item65); righttablewidget->setItem(6,2,Item66); righttablewidget->setItem(7,2,Item67); righttablewidget->setItem(8,2,Item68); righttablewidget->setItem(9,2,Item69); righttablewidget->setItem(10,2,Item70); righttablewidget->setItem(11,2,Item71); righttablewidget->setItem(12,2,Item72); righttablewidget->setItem(13,2,Item73); righttablewidget->setItem(14,2,Item74); righttablewidget->setItem(15,2,Item75); QTableWidgetItem *Item80 = new QTableWidgetItem("0"); QTableWidgetItem *Item81 = new QTableWidgetItem("0"); QTableWidgetItem *Item82 = new QTableWidgetItem("0"); QTableWidgetItem *Item83 = new QTableWidgetItem("0"); QTableWidgetItem *Item84 = new QTableWidgetItem("0"); QTableWidgetItem *Item85 = new QTableWidgetItem("0"); QTableWidgetItem *Item86 = new QTableWidgetItem("0"); QTableWidgetItem *Item87 = new QTableWidgetItem("0"); QTableWidgetItem *Item88 = new QTableWidgetItem("0"); QTableWidgetItem *Item89 = new QTableWidgetItem("0"); QTableWidgetItem *Item90 = new QTableWidgetItem("0"); QTableWidgetItem *Item91 = new QTableWidgetItem("0"); QTableWidgetItem *Item92 = new QTableWidgetItem("0"); QTableWidgetItem *Item93 = new QTableWidgetItem("0"); QTableWidgetItem *Item94 = new QTableWidgetItem("0"); QTableWidgetItem *Item95 = new QTableWidgetItem("0"); righttablewidget->setItem(0,3,Item80); righttablewidget->setItem(1,3,Item81); righttablewidget->setItem(2,3,Item82); righttablewidget->setItem(3,3,Item83); righttablewidget->setItem(4,3,Item84); righttablewidget->setItem(5,3,Item85); righttablewidget->setItem(6,3,Item86); righttablewidget->setItem(7,3,Item87); righttablewidget->setItem(8,3,Item88); righttablewidget->setItem(9,3,Item89); righttablewidget->setItem(10,3,Item90); righttablewidget->setItem(11,3,Item91); righttablewidget->setItem(12,3,Item92); righttablewidget->setItem(13,3,Item93); righttablewidget->setItem(14,3,Item94); righttablewidget->setItem(15,3,Item95); /***************************************************AD表格內容*******************************************************/ splittermain->show(); //顯示主介面 return a.exec(); }
四 遺留問題:
1 無法顯示中文?
嘗試了很多方法都不行
2 如何在表格中插入圖片?
3 PushBotton的連線及函式如何寫?
4如何實現翻頁的效果?