您的位置:首页 > 产品设计 > UI/UE

在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