1. 程式人生 > >Qt -2:通過程式設計完成一個測試介面

Qt -2:通過程式設計完成一個測試介面

一  目的:      

這幾天在學習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如何實現翻頁的效果?