Qt UI创建方法



http://blog.csdn.net/zzwdkxx/article/details/25823363

Qt程序两种制作页面的方式

1:自己通过代码实现,创建控件,添加布局管理器。
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    label1 = new QLabel(this);
    label1->setText(QString::fromLocal8Bit("请输入圆的半径:"));
    lineEdit = new QLineEdit(this);
    label2 = new QLabel(this);
    button = new QPushButton(this);
    button->setText(QString::fromLocal8Bit("显示对应圆的面积"));
    QGridLayout *mainLayout = new QGridLayout(this);
    mainLayout->addWidget(label1,0,0);
    mainLayout->addWidget(lineEdit,0,1);
    mainLayout->addWidget(label2,1,0);
    mainLayout->addWidget(button,1,1);
 }
 
2:Qt Designer拖拽的形式产生ui文件。 
Qt Designer做的界面保存后会生成ui文件,
针对于ui文件,uic会利用设计好的ui生成一个包含类Ui_**的ui_**.h文件。exp:uic  dialog.ui  –o  ui_dialog.h
要让ui design设计出来的界面显示出来,只要能设法调用Ui_Dialog类的setupUi函数就行了。
就生产了下面的ui_dialog.h文件:

/**************************************ui_dialog.h*******************************************/

#ifndef UI_DIALOG_H
         #define UI_DIALOG_H

#include <QtCore/QVariant>
         #include <QtGui/QAction>
         #include <QtGui/QApplication>
         #include <QtGui/QButtonGroup>
         #include <QtGui/QDialog>
         #include <QtGui/QHeaderView>
         #include <QtGui/QLabel>
         #include <QtGui/QPushButton>

QT_BEGIN_NAMESPACE

class Ui_Dialog
         {
         public:
                 QLabel *label;
                 QPushButton *pushButton;

        void setupUi(QDialog *Dialog)
                 {
                         if (Dialog->objectName().isEmpty())
                         Dialog->setObjectName(QString::fromUtf8("Dialog"));
                         Dialog->resize(115, 148);
                         label = new QLabel(Dialog);
                         label->setObjectName(QString::fromUtf8("label"));
                         label->setGeometry(QRect(10, 30, 91, 21));
                         QFont font;
                         font.setPointSize(12);
                         font.setBold(true);
                         font.setWeight(75);
                         label->setFont(font);
                         pushButton = new QPushButton(Dialog);
                         pushButton->setObjectName(QString::fromUtf8("pushButton"));
                         pushButton->setGeometry(QRect(20, 80, 75, 23));

                retranslateUi(Dialog);

                QMetaObject::connectSlotsByName(Dialog);
                 } // setupUi

        void retranslateUi(QDialog *Dialog)
                 {
                         Dialog->setWindowTitle(QApplication::translate("Dialog",        "Dialog",        0,        QApplication::UnicodeUTF8));
                         label->setText(QApplication::translate("Dialog",        "hello,wang",        0,        QApplication::UnicodeUTF8));
                         pushButton->setText(QApplication::translate("Dialog",        "close",        0,        QApplication::UnicodeUTF8));
                 } // retranslateUi

};

namespace Ui {
                 class Dialog: public Ui_Dialog {};    //此处定义了命名空间,其中定义了一个Dialog类,继承自Ui_Dialog类
        } // namespace Ui

QT_END_NAMESPACE

#endif // TT_H

第一种直接使用
#include <QtGui/QApplication>
         #include <QDialog>

#include "ui_dialog.h"
         int main(int argc, char *argv[])
         {
         QApplication a(argc, argv);
         Ui::Dialog ui;
         QDialog *d=new QDialog;
         ui. setupUi(d);
                 d->show();
                 return a.exec();
         }
  
第二种方法定义一个新类,声明一个ui子对象,利用该对象来加载界面
就是将Ui::Dialog ui或Ui::Dialog *ui写成一个新定义类的一个数据成员,也就是qtcreator提供的那种方法。(也叫单继承方法,只继承了QDialog类)

#include <QDialog>
#include "ui_dialog.h"

class Dialog : public QDialog {
                 Q_OBJECT
         public:
                 Dialog(QWidget *parent = 0);
                 ~Dialog();

  protected:
                 void changeEvent(QEvent *e);

  private:
                 Ui::Dialog *ui;

  private slots:
                 void on_pushButton_clicked();
         };

这样使用的时候需要注意的是在初始化的时候要先完成子对象的初始化,在其构造函数中重写构造函数。

Dialog::Dialog(QWidget *parent) :
                 QDialog(parent),
                 ui(new Ui::Dialog)
         {
                 ui->setupUi(this);
         }

第三种方法是以Ui_Dialog类为基类,派生一个新类,在该类的初始化函数中调用setupUi。(也叫多重继承方法,继承了QDialog类和Ui::Dialog类)

#ifndef DIALOG_H
         #define DIALOG_H

#include <QDialog>
         #include "ui_dialog.h"

class Dialog : public QDialog ,public Ui::Dialog
         {
                 Q_OBJECT
         public:
                 Dialog(QWidget *parent = 0);
         };

实现如下:

#endif // DIALOG_H
         #include "dialog.h"
         #include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
                 QDialog(parent),
                 Ui::Dialog()      
         {
                 setupUi(this);
         }


你可以按照以下步骤在QT Creator中创建UI界面: 1. 打开QT Creator,点击"新建项目"。 2. 在项目向导中选择"Qt Widgets应用",点击"选择"。 3. 输入项目名称和保存路径,点击"下一步"。 4. 在"类信息"页面,选择一个窗口类或对话框类作为你的界面的基类,点击"下一步"。 5. 在"设计窗口"页面,选择你要创建的界面类型,比如主窗口、对话框等,点击"下一步"。 6. 在"类名和头文件"页面,输入类名和头文件名称,点击"下一步"。 7. 在"源文件"页面,选择是否生成源文件和将其添加到版本控制中,点击"下一步"。 8. 在"形式与槽函数"页面,选择是否生成形式和槽函数,点击"下一步"。 9. 在"项目配置"页面,选择编译工具链和目标平台,点击"下一步"。 10. 在"总结"页面,确认你的设置,点击"完成"。 11. QT Creator将为你生成一个基本的UI界面文件(.ui文件)和相应的源文件和头文件。 12. 双击.ui文件以打开Qt Designer界面编辑器,在这里你可以设计和布局你的界面。 13. 使用Qt Designer提供的工具和控件将界面设计成你想要的样子。你可以添加按钮、标签、文本框、列表框等控件,并设置它们的属性和布局。 14. 在Qt Designer中,你还可以使用布局管理器来调整控件的位置和大小,以适应不同的窗口大小。 15. 当你完成了界面设计后,保存.ui文件并关闭Qt Designer。 16. 回到QT Creator,它会自动将.ui文件编译成相应的代码,并将代码与源文件和头文件关联起来。 17. 在源文件中,你可以使用生成代码来访问和操作你的界面控件,以及定义槽函数来处理用户交互。 这样,你就成功地在QT Creator中创建了一个UI界面。你可以根据需要进一步扩展和定制界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值