在Qt工程中添加ui文件:使用/添加工程之外的ui文件
2017-10-12 10:43
375 查看
在Qt工程中使用工程外的ui文件的方式:作为一个类直接使用、包含到自己的类中或继承使用
将ui文件添加到工程中,作为一个类以直接使用
注:这里指使用原本不属于该工程的ui文件第一步:在工程文件.pro中添加UI文件
在.proj文件中添加:FORMS += PATH/ui_file_1.ui \ PATH/ui_file_2.ui
FORMS表示添加ui文件到本工程中
对于多个UI文件,使用续航符’\’来连接多行
注意:应该对UI文件执行uic命令,以生成UI对应的.h文件,在.h文件中有命名空间Ui及其内部包含的ui类名称,这个命名空间和类名称可以在源文件中用来引用UI对象
第二步:在代码中引用UI文件对象
确认.ui文件中命名空间的名称以及对应类的名称。这里假设为Ui::Foo;ui对象的引用方式为:Ui::Foo ui; //ui对象实例 QWidget *ui_widget = new QWidget; //注意必须是QWidget *而不能是QWidget(setupUi接收QWidget*) ui.setupUi(ui_widget); ui_widget->show();
包含到自己的类中,将Ui对象作为私有变量使用
第一步:在自定义的类中将ui对象声明为类的成员
class MyClass : public QWidget { Q_OBJECT public: MyClass(); private: Ui_Foo ui; };
第二步:在该类的构造函数中setupUi()
MyClass::MyClass(QWidget* parent) : QWidget(parent) { ui.setupUi(this); //初始化并加载ui文件 ...; }
实质:将UI文件对应的ui类(通过uic工具从ui文件转得.h文件)包含到自己的类里面作为private成员来使用
继承ui对象
注意:一般来说,为了软件架构良好设计,一般不使用多继承(避免耦合、复杂性等),非用不可,应该考虑使用多次单继承来替代。
当类继承了ui类后,由于本身需要继承QWidget等类,因此为多继承。第一步:在自定义的类中继承Ui类
注意:Qt多继承必须将Qt库的类放到第一个,因为Qt默认要求第一个类为QObject的子类class MyClass : public QWidget , public Ui_Foo //多重继承 { Q_OBJECT public: MyCLass(QWidget * parent = 0); ... };
第二步:在构造函数中增加ui.setupUi(this)初始化Ui文件
==由于继承了Ui类,即Ui类的所有方法被继承,可以直接使用而不用加上实例名称:如使用setupUi(this)而不是
ui.setupUi(this)。==
总结
都需要利用uic文件来将ui文件转换为C++源文件都是通过ui类来引用UI文件对象
都需要在工程文件.pro中添加FORMS表示添加ui文件
相关文章推荐
- Qt中使用的工程文件(.pro文件)
- 在Qt工程文件中根据不同版本号使用不同源码
- 关于Qt中使用的工程文件
- #include 和 在FileView中添加工程文件的使用和区别(简化ClassView)
- Qt中使用的工程文件(.pro文件)
- vc6.0无法使用“添加到工程”或者"打开文件"解决方法
- QT:直接使用ui文件生成h文件的方法
- 给Qt工程生成的可执行文件添加图标
- 在Qt中如何使用QtDesigner创建的UI文件(二)
- QT pro工程文件中添加其他pro工程文件(不这样做,改成添加pri文件,见另一篇)
- qt 添加资源文件及使用qss
- 关于Qt中使用的工程文件(.pro文件)
- 在 Eclipse Workbench 之外使用 Eclipse GUI,第 3 部分: 添加操作、菜单和工具栏完成简单的文件资源管理器应用程序
- qt工程添加Qt Project include文件(xx.pri)
- Qt中使用的工程文件(.pro文件)
- 在Qt中如何使用QtDesigner创建的UI文件(二)
- VS2010在QT中使用.ui文件所需设置
- Qt工程在Linux下编译时出现.ui文件编译不通过的问题
- Qt中使用的工程文件(.pro文件)
- pyside使用qt的ui文件