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中添加最后的字符)。其中更多的运用还需要自己慢慢的摸索

猜你喜欢

转载自www.cnblogs.com/weirdo-xo/p/9418737.html