关于ui的一些总结(参考Qt4精彩实例分析)

如何在程序中直接调用ui,有三种方法

1:直接调用

2:单继承法

3:多继承法

关于直接调用:

通过qt生成一个比如name的ui文件,然后通过qt自带的uic工具生成一个name.h
uic生成具体方法是:首先进入到命令行转到你当前pro所在的目录 然后uic -o name.h name.ui即可.ui和h名字一定要相同
然后调用即可 比如:
#include "ui_name.h" 
int  main( int  argc,  char * argv[])  


{ 
QApplication  app( argc, argv); 


Ui:: Name  ui;  


QDialog  * dialog= new  QDialog ;//ui为QDialog 


ui. setupUi( dialog); 


dialog-> show();  


return  app. exec(); 


}  


关于单继承调用:


和之前方法一样生成一个 first.ui 相应的头文件first.h 然后比如我们新建一个MyWidget的类 继承QWidget
在MyWidget.h中 

具体代码如下:


#include  "ui_myfirst.h"  


class  MyWidget  : public  QWidget 


{  Q_OBJECT 

public :
  explicit  MyWidget( QWidget * parent  = 0 );  
 

private :  
 Ui:: myfirst myfirstUi;
}  


在MyWidget.cpp中 具体代码如下:


#include  "mywidget.h" 


MyWidget:: MyWidget( QWidget * parent)  : QWidget ( parent) 


{     
QWidget * w1= new  QWidget ;    


myfirstUi. setupUi( w1);   //注意一点 如果需要调用myfirstUi中任何一个控件方法 那就需要加上myfirstUi::才行   

  
w1-> show();  


}
 关于多继承调用:
新建一个ThirdDialog类 在ThirdDialog.h中 后面继承了Ui::mythird
#include  <QDialog>  


#include  "ui_mythird.h" 


class  ThirdDialog  : public  QDialog , private Ui:: mythird
 
{  Q_OBJECT 
 
public :  explicit  ThirdDialog( QWidget * parent  = 0 ); 
 
};
   ThirdDialog.cpp中
#include  "thirddialog.h"  

ThirdDialog:: ThirdDialog( QWidget * parent) :  QDialog ( parent) 
{ 


setupUi( this );
}
 

这样就可以直接使用mythird中的控件了 无需加上ui对象前缀   在 clickSlot函数中 可以直接调用ThirdDialog了 


void  MyWidget:: clickSlot() 
{   
ThirdDialog  * dlg= new  ThirdDialog;  dlg-> exec();

 

另外如果只需要加载下ui 并不需要更新内部内容 可以用QUiLoader进行动态加载

动态加载无需头文件 相关代码如下

void xxx()

{

QUiLoader loader;

QFile file(":/aaa.ui");

file.open(QFile::ReadOnly);

QWidget *w=new QWidget;

w=loader.load(&file);

file.close;

w->show;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值