Qt ui在程序中的使用方式
来源:互联网 发布:马哥2016百度云python 编辑:程序博客网 时间:2024/06/07 02:52
Qt 通过Qt designer 可以生成ui文件,在使用时可利用Qt自带的uic工具生成ui.xxx.h文件进行使用。
利用Designer设计生成的ui有三种使用方式
1.直接使用法
QWidget *w = new QWidget;
Ui::Small s;
s.setupUi(w);
w.show();
2.单继承法
#ifndef WIDGET_H
#define WIDGET_H
#include<QTabWidget>
#include<QWidget>
#include<QtGui>
#include"ui_first.h" //包含3个Ui的头文件,由Qt自动生成
#include"ui_second.h"
#include"ui_third.h"
class MyWidget:public QWidget
{
Q_OBJECT
public:
MyWidget();
~MyWidget();
private:
QTabWidget *tab;
Ui::First firstUi;//声明3个私有的窗体对象,在代码中通过对象操作窗体元素
Ui::Second secondUi;
Ui;;Third thirdUi;
private slots;
void slotChild();
};
#endif
------------------------------------------------------------------------------------------------------------
#include"widget.h"
MyWidget::MyWidget()
{
tab = new QTabWidget(this);
QWidget *w1 = new QWidget;
firstUi.setupUi(w1);
QWidget *w2 = new QWidget;
secondUi.setuoUi(w2);
tab->addWidget(w1,"First");
tab->addWidget(w2."Second");
tab->resize(300,300);
connect(firstUi.childPushButton,SIGNAL(clicked()),this,SLOT(slotChild()));
connect(secondUi.closePushButton,SIGNAL(clicked()),this,SLOT(close()));
}
MyWidget::~MyWidget()
{
QDialog *w3 = new QDialog;
thirdUi.setupUi(w3);
w3->exec();
}
----------------------------------------------------------------------------------------------------------------
3.多继承法
#include"ui_third.h"
class ThirdDialog:public QDialog,private Ui::Third
{
ThirdDiaog();
......
}
ThridDialog:ThirdDialog()
{
setupUi(this);
}
单继承与多继承方式的优缺点:
单继承在操作Ui页面上的控件时需要加上ui对象前缀,编写代码较为麻烦,但对于程序中所需要用到的ui页面较多时,使用单继承法则要简单灵活多
多继承可以直接对ui页面上的控件或函数进行操作调用,代码更加简洁。
关于动态加载ui
Qt提供了一个QtUiTools模块,包含了与ui相关的类,如QUiLoader,可以在运行中动态加载.ui文件。
实现动态加载ui,首先需要在程序中包含QtUiTools模块的头文件:
#include<QtUiTools>
并且新建一个.qrc文件,描述.ui文件的路径:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>forms/third.ui</file>
</qresource>
</RCC>
将弹出子窗口的.ui文件放在forms目录下面
在程序的.pro文件中加入以下两行代码:
CONFIG+=uitools
RESOURCES+=uiloader.qrc
最后修改slotChild()槽函数的实现代码如下:
void MyWidget::slotChild()
{
QUiLoader loader;
QFile file(":/forms/third.ui");
file.open(QFile::ReadOnly);
QWidget *third = loader.load(&file);
file.close();
third->show();
}
动态加载的方式不用生成ui_third.h文件,在程序运行时才会被加载,采用这种方式的最大好处是可以在不重新编译程序的情况下,改变窗口的布局和显示,但在主程序中无法对子窗口的空间进行操作。
- Qt ui在程序中的使用方式
- Qmake在非Qt程序中的使用
- QT中的UI修改后,程序UI依然是旧样
- 解决QT中的UI修改后,程序UI依然是旧样
- 在QT中的摄像头程序
- Qmake在QT中的使用
- OpenCv在Qt中的使用
- OpenCv在Qt中的使用
- gdal - 在qt中的使用
- opencv在Qt中的使用
- 数据库在qt中的使用
- XML在Qt中的使用
- Qt学习十一:Qt+VS练习一:Qt的UI布局和在VS中的配合
- swagger-UI在springMVC结构中的使用
- VS2010在QT中使用.ui文件所需设置
- 在Qt command prompt下学会使用ui文件
- QT中使用QPainter在ui子控件中绘图
- 在Qt中如何使用QtDesigner创建的UI文件
- Spring IoC容器--Bean的装配
- 中央处理器基本简介
- 归并排序
- 麦森数
- Windows下Critical Section、Event、Mutex、Semaphores区别
- Qt ui在程序中的使用方式
- 500 OOPS: vsftpd: refusing to run with writable anonymous root
- 深入理解C++的动态绑定和静态绑定
- 对于无法连接外网的用户,如何编译语言模型训练工具bigfatlm
- java获得当前屏幕像素
- vessie
- 有关虚(virtual)析构函数
- 快速排序
- 简单工厂模式