在Qt工程中添加ui文件:使用/添加工程之外的ui文件

15 篇文章 0 订阅
8 篇文章 0 订阅

在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)。==

总结

  1. 都需要利用uic文件来将ui文件转换为C++源文件
  2. 都是通过ui类来引用UI文件对象
  3. 都需要在工程文件.pro中添加FORMS表示添加ui文件
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值