博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt ui在程序中的使用
阅读量:4678 次
发布时间:2019-06-09

本文共 1869 字,大约阅读时间需要 6 分钟。

首先介绍ui的文件,Qt 通过Qt designer 可以生成ui文件,ui文件以XML的方式记录了designer生成界面的相关内容(大体内容包括widget的属性,其内容的相关属性,头文件,变量,槽,函数)。在使用designer创建的form(也就是ui文件)最后在qmake的时候转换成c++代码。qmake能够检测到窗体文件(*.ui件), 通过uic(user interface compiler)可以把ui文件内容翻译成标准的.h,.cpp文件,并存放在ui_xxx.h文件中。该文件给出了Dialog对应类的完整定义,类名为Ui_Dialog,并包含一个setupUi()成员函数,用于初使化form。在该头文件的最后,使用一个Ui命名空间将该Ui_Dialog类包含进来,并派生出名为Dialog的子类,而Ui::Dialog就成为Designer设计的界面对外的接口了。

利用Designer设计生成ui的3种使用方式

1.直接使用法

  QWidget * w  = new QWidget;  

  Ui::Small s;  

  s.setupUi(w);  

  w.show();   

2.单继承法

  1. //widget.h  
  2. #ifndef WIDGET_H  
  3. #define WIDGET_H  
  4. #include <QTabWidget>  
  5. #include <QWidget>  
  6. #include <QtGui>  
  7. #include "ui_first.h"                 //包含3个ui的头文件  
  8. #include "ui_second.h"  
  9. #include "ui_third.h"  
  10. class MyWidget:public QWidget{  
  11.     Q_OBJECT  
  12. public:  
  13.     MyWidget();  
  14.     ~MyWidget();  
  15. private:  
  16.     QTabWidget *tab;  
  17.     Ui::First firstUi;                         //在MyWidget类中声明了3个私有的窗体对象,  
  18.     Ui::Second secondUi;              // 我们在代码中会通过该对象操作窗体元素  
  19.     Ui::Third thirdUi;  
  20. private slots:  
  21.     void slotChild();     
  22. };  
  23. #endif  
  24. //widget.cpp  
  25. #include "widget.h"  
  26. MyWidget::MyWidget(){  
  27.     tab = new QTabWidget(this);  
  28.     QWidget *w1 = new QWidget;                               //首先新建QWidget对象,以此QWidget对象为参数  
  29.     firstUi.setupUi(w1);                                                //调用第一个ui的setupUi(),生成第一个ui界面  
  30.     QWidget *w2 = new QWidget;  
  31.     secondUi.setupUi(w2);  
  32.     tab->addTab(w1,"First");  
  33.     tab->addTab(w2,"Second");  
  34.     tab->resize(300,300);  
  35.     connect(firstUi.childPushButton,SIGNAL(clicked()),this,SLOT(slotChild()));  
  36.     connect(secondUi.closePushButton,SIGNAL(clicked()),this,SLOT(close()));  
  37. }  
  38. MyWidget::~MyWidget(){  
  39. }  
  40. void MyWidget::slotChild(){  
  41.     QDialog *w3 = new QDialog;  
  42.     thirdUi.setupUi(w3);  
  43.     w3->exec();     
  44. }   

3.多继承法

  1. #include "ui_third.h"  
  2. class ThirdDialog: public QDialog, private Ui::Third{  
  3.     ThirdDialog();  
  4.      ......  
  5. }  
  6. ThirdDialog:ThirdDialog(){  
  7.     setupUi(this);  
  8. }    
  9. 从以上 对 两种继承方式的分析可见,多继承方式可以直接对ui页面上的控件或函数进行操作调用,代码编写更
  10. 加简介;而使用单继承方式,在操作ui页面上的控件时需要加上ui对象前缀,编写代码较为麻烦,但对于程序

    中所需用到的ui页面较多时,使用单继承法则要简单灵活的多。

转载于:https://www.cnblogs.com/zhaowl/archive/2013/05/15/3080425.html

你可能感兴趣的文章
第9周表格
查看>>
用cxf创建webservice服务端
查看>>
Visual Studio 单元测试之三---压力测试
查看>>
【整理】windows service类型项目的开发。
查看>>
模式的秘密---代理模式
查看>>
jmeter之jtl文件解析
查看>>
selenium 标签页切换
查看>>
import configparser
查看>>
勇士闯迷宫
查看>>
mysql-冗余和重复索引
查看>>
backbone学习笔记0
查看>>
移动端调试 weinre
查看>>
JDK自带工具keytool生成ssl证书
查看>>
总结下抽象类Abstract和虚方法Virtual(易混点)
查看>>
CSUOJ 1248 非变性聚丙烯酰胺凝胶电泳
查看>>
POJ 2823 Sliding Window
查看>>
element-UI el-table二次封装
查看>>
Quartz.net Cron表达式
查看>>
类名.class
查看>>
vue组件
查看>>