QT4 designer生成的头文件的优化

原创 2007年10月06日 20:35:00

        前面的文章中举了一个用QT Designer作QT程序界面设计的例子,但使用UIC转出来的头文件代码比较凌乱,看起来太累,如果做的是稍复杂一点的界面程序,放一段时间自己再来看,怕是要花不少时间,最好是对这个头文件做一些优化。下面以上篇文章的例子来说明一下如何优化。

       首先看看main.cpp中调用头文件中设计好的窗口的过程:

        QWidget w;
        Ui::Form ui;
        ui.setupUi(&w);        
        ui.show();

        在这当中,UI通过查看form.h可以得知是创建的命名空间,Form是从Ui_Form生成的类,setupUi是界面的初始化函数。这段代码中定义了一个QWidget对象,将其传递到UI_Form中使用setup_Ui对其进行界面初始化。

        那么,我们可以做这样的修改,直接定义一个QWidget派生的子类,它的初始化过程与setup_Ui一致,于是,form.h可以修改为如下:

#ifndef FORM_H
#define FORM_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QPushButton>
#include <QtGui/QWidget>
#include <QtGui/QDialog>


class Ui_Form:public QWidget
{
public:
    Ui_Form();  
    QPushButton *pushButton;
};

#endif

      这里定义了一个Ui_form类,原来的UI命名空间去掉了,Ui_Form是从QWidget派生出来的,可以直接在定义后使用show函数使其显示,main.cpp就可以更改为

#include <qapplication.h>
#include <qwidget.h>
#include "form.h"
int main(int argc, char **argv)
{
        QApplication app(argc, argv);
        Ui_Form ui;
        ui.show();
        return app.exec();
}
      这里,将不再在form.h中定义初始化的过程的实现,而是将初始化过程的代码放在了新建的form.cpp文件中,该文件内容如下:
#include "form.h"
Ui_Form::Ui_Form()
{
    if (this->objectName().isEmpty())
        this->setObjectName(QString::fromUtf8("Form"));
    this->resize(400, 300);
    pushButton = new QPushButton(this);
    pushButton->setObjectName(QString::fromUtf8("pushButton"));
    pushButton->setGeometry(QRect(40, 230, 75, 23));
    this->setWindowTitle(QApplication::translate("Form", "Form", 0, QApplication::UnicodeUTF8));
    pushButton->setText(QApplication::translate("Form", "PushButton", 0, QApplication::UnicodeUTF8));
    QObject::connect(pushButton, SIGNAL(clicked()), this, SLOT(close()));
    Q_UNUSED(this);
}

        可以看出来,这其中的Ui_Form()是实现Ui_Form类的构造函数,它的代码与原来的setup_Ui()几乎一致,区别在于用this代替了setup_Ui()中作为参数传递进来的Form,另外将setup_Ui()中被调用的retranslateUi()函数合并过来了。

        做完这些修改后,保存,编译,运行,与直接原来使用UIC生成的头文件的程序完全一样,但其代码更容易看明白。

     

相关文章推荐

QT4(C++)两个头文件相互包含(类超前引用)

1、C++中的类相互包含(QT4)      所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。     一般情况下,C/C++要求所有的类型必须在使用前被定义,但是在一些特殊情况...

QT4下面如何使用designer生成源码

  • 2011年11月30日 18:34
  • 6.93MB
  • 下载

QT4学习之designer的初步使用

主机环境:linux 内核版本:2.6.32-220.el6.i686 一、启动designer  在桌面环境下, 也就是/etc/inittab文件中启动级别为5. 只有在桌面环境下才...

QT4 Designer的使用

http://blog.csdn.net/luopeiyuan1990/article/details/8516162 OpenSource版的QT4 Designer功能比较少,只能只能设计窗体布...

用 Qt4 Designer 配合程序设计

  • 2011年11月16日 16:30
  • 85KB
  • 下载

Qt4中ui文件的使用方法:

Qt4中ui文件的使用方法: ui文件的使用是在Qt4中不太容易上手的一点,因为很多同学都是从Qt3升级到Qt4的,在升级过程中发现这部分的变化非常之大,让人有点无所适从。 Qt3的designe...
  • yvhvv
  • yvhvv
  • 2012年01月13日 22:17
  • 544

内核(2.6.14) + 根文件系统 + Qt4 移植 for S3C2410

内核(2.6.14) + 根文件系统 + Qt4 移植 for S3C2410 TARGET CPU:   S3C2410X SDRAM: HY57V561620(32MB) × 2 FLAS...

qt4ini配置文件

http://hi.baidu.com/cyclone/blog/item/80a0793140fd3814eac4af7d.html 本文介绍的是QSettings的 IniFormat 截止...
  • ZXGIS
  • ZXGIS
  • 2012年02月28日 14:53
  • 1086

qt4 系统无法调用屏幕校准文件

平台:Linux2.6.30.4 TQ2440 Qt4 问题:

Qt4中ui文件的使用方法

Qt4中ui文件的使用方法 ui文件的使用是在Qt4中不太容易上手的一点,因为很多同学都是从Qt3升级到Qt4的,在升级过程中发现这部分的变化非常之大,让人有点无所适从。 Qt3的designer简直...
  • fjiale
  • fjiale
  • 2011年05月19日 19:33
  • 447
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT4 designer生成的头文件的优化
举报原因:
原因补充:

(最多只允许输入30个字)