QtDesigner與程序設計模式


   在我的上一篇博文中提到我認識到UI設計的重要性。在這里將解析一下使用QtDesigner設計UI進行程序GUI的設計,QtDesigner的.ui文件可以轉化為許多的程序代碼,比如我知道的就有:c++,python;以下將是以c++為程序設計語言解析一下UI和Code混合編程。

class Ui_QWialog
{
public:
    //此處省略關於類里面的一些控件的申明
  ........
  ........


//個人解析:從下面的程序中可以看出一些如何使用QtDesigner和代碼混合設計的模式。
//在下面的程序中有一個參數QDialog,這是從程序中傳過來的關於主界面的地址,通過這個地址就可以操作整個的界面了
//這個.ui就是一個c++中的類,在使用時其實也是通過直接的申明該類來創建對象的,如果要操作其中的某一個控件可以如下使用:
//  ui->widget

void setupUi(QDialog *QWialog) { if (QWialog->objectName().isEmpty())   QWialog->setObjectName(QStringLiteral("QWialog")); QWialog->resize(400, 300); horizontalLayoutWidget = new QWidget(QWialog); //指定父窗口 horizontalLayoutWidget->setObjectName(QStringLiteral("horizontalLayoutWidget")); horizontalLayoutWidget->setGeometry(QRect(10, 10, 351, 51)); horizontalLayout = new QHBoxLayout(horizontalLayoutWidget); horizontalLayout->setSpacing(6); horizontalLayout->setContentsMargins(11, 11, 11, 11); horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); horizontalLayout->setContentsMargins(0, 0, 0, 0); groupBox = new QGroupBox(horizontalLayoutWidget); groupBox->setObjectName(QStringLiteral("groupBox")); checkBox_2 = new QCheckBox(groupBox); checkBox_2->setObjectName(QStringLiteral("checkBox_2")); checkBox_2->setGeometry(QRect(30, 20, 71, 16)); checkBox_3 = new QCheckBox(groupBox); checkBox_3->setObjectName(QStringLiteral("checkBox_3")); checkBox_3->setGeometry(QRect(240, 20, 71, 16)); checkBox = new QCheckBox(groupBox); checkBox->setObjectName(QStringLiteral("checkBox")); checkBox->setGeometry(QRect(120, 20, 71, 16)); horizontalLayout->addWidget(groupBox); horizontalLayoutWidget_2 = new QWidget(QWialog); horizontalLayoutWidget_2->setObjectName(QStringLiteral("horizontalLayoutWidget_2")); horizontalLayoutWidget_2->setGeometry(QRect(10, 80, 351, 51)); horizontalLayout_2 = new QHBoxLayout(horizontalLayoutWidget_2); horizontalLayout_2->setSpacing(6); horizontalLayout_2->setContentsMargins(11, 11, 11, 11); horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2")); horizontalLayout_2->setContentsMargins(0, 0, 0, 0); groupBox_2 = new QGroupBox(horizontalLayoutWidget_2); groupBox_2->setObjectName(QStringLiteral("groupBox_2")); radioButton = new QRadioButton(groupBox_2); radioButton->setObjectName(QStringLiteral("radioButton")); radioButton->setGeometry(QRect(10, 20, 89, 16)); radioButton_2 = new QRadioButton(groupBox_2); radioButton_2->setObjectName(QStringLiteral("radioButton_2")); radioButton_2->setGeometry(QRect(120, 20, 89, 16)); radioButton_3 = new QRadioButton(groupBox_2); radioButton_3->setObjectName(QStringLiteral("radioButton_3")); radioButton_3->setGeometry(QRect(240, 20, 89, 16)); horizontalLayout_2->addWidget(groupBox_2); plainTextEdit = new QPlainTextEdit(QWialog); plainTextEdit->setObjectName(QStringLiteral("plainTextEdit")); plainTextEdit->setGeometry(QRect(10, 140, 351, 81)); horizontalLayoutWidget_3 = new QWidget(QWialog); horizontalLayoutWidget_3->setObjectName(QStringLiteral("horizontalLayoutWidget_3")); horizontalLayoutWidget_3->setGeometry(QRect(10, 240, 341, 41)); horizontalLayout_3 = new QHBoxLayout(horizontalLayoutWidget_3); horizontalLayout_3->setSpacing(6); horizontalLayout_3->setContentsMargins(11, 11, 11, 11); horizontalLayout_3->setObjectName(QStringLiteral("horizontalLayout_3")); horizontalLayout_3->setContentsMargins(0, 0, 0, 0); groupBox_3 = new QGroupBox(horizontalLayoutWidget_3); groupBox_3->setObjectName(QStringLiteral("groupBox_3")); pushButton = new QPushButton(groupBox_3); pushButton->setObjectName(QStringLiteral("pushButton")); pushButton->setGeometry(QRect(20, 10, 75, 23)); pushButton_2 = new QPushButton(groupBox_3); pushButton_2->setObjectName(QStringLiteral("pushButton_2")); pushButton_2->setGeometry(QRect(130, 10, 75, 23)); pushButton_3 = new QPushButton(groupBox_3); pushButton_3->setObjectName(QStringLiteral("pushButton_3")); pushButton_3->setGeometry(QRect(220, 10, 75, 23)); horizontalLayout_3->addWidget(groupBox_3); retranslateUi(QWialog);      //這是一些屬性的設置函數 QMetaObject::connectSlotsByName(QWialog); } // setupUi

在上面的代碼中解釋了其中的一些關鍵的點。使用混合編程的模式,在引入.ui文件后就可以開始界面的重新布局和設置了。

看下面的引用.ui的文件。

#include "qwialog.h"
#include "ui_qwialog.h"

QWialog::QWialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::QWialog)
{
    ui->setupUi(this); //在這里就是初始化.ui代碼。並且通過傳入this指針來使得在主界面上進行界面布置。
}

QWialog::~QWialog()
{
    delete ui;
}

這是運行的結果圖

                    

接下來對該界面進行code的設計,這里只是在PainTextEdit中添加一行的文字:

                    

以下是一個簡單的代碼:

#include "qwialog.h"
#include "ui_qwialog.h"

QWialog::QWialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::QWialog)
{
    ui->setupUi(this);
    ui->plainTextEdit->appendPlainText("UI and Code");

}

QWialog::~QWialog()
{
    delete ui;
}

這里只是簡單的添加一行的代碼(也就是在Text中添加最后的字符)。其中更多的運用還需要自己慢慢的摸索

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM