ui_*.h文件中自动生成的界面类的使用方法
2014-05-15 10:23
495 查看
上篇文章介绍的有点凌乱,下面用一个简单例子介绍下界面类的使用。
ui_*.h文件中自动生成的界面类的使用方法有三种:直接使用、定义新类、派生新类。举例如下:
现有一个*.ui文件生成的ui_*.h文件如下:
(1)直接使用Ui::HelloDialog类在主函数中定义对象
main.c
(2)定义新类,在新类中定义一个Ui::HelloDialog的子对象,使用子对象加载该界面。
mywidget.h
mywidget.cpp 在这里用子对象加载界面
(3)派生新类,继承Ui::HelloDialog类
hellodialog.h
hellodialog.cpp
main.cpp
以上代码经验证无误,相同的运行结果,如下:
ui_*.h文件中自动生成的界面类的使用方法有三种:直接使用、定义新类、派生新类。举例如下:
现有一个*.ui文件生成的ui_*.h文件如下:
#ifndef UI_HELLODIALOG_H #define UI_HELLODIALOG_H #include <QtCore/QVariant> #include <QtGui/QAction> #include <QtGui/QApplication> #include <QtGui/QButtonGroup> #include <QtGui/QDialog> #include <QtGui/QHeaderView> #include <QtGui/QLabel> QT_BEGIN_NAMESPACE class Ui_HelloDialog { public: QLabel *label; void setupUi(QDialog *HelloDialog) { if (HelloDialog->objectName().isEmpty()) HelloDialog->setObjectName(QString::fromUtf8("HelloDialog")); HelloDialog->resize(238, 184); label = new QLabel(HelloDialog); label->setObjectName(QString::fromUtf8("label")); label->setGeometry(QRect(70, 70, 151, 31)); retranslateUi(HelloDialog); QMetaObject::connectSlotsByName(HelloDialog); } // setupUi void retranslateUi(QDialog *HelloDialog) { HelloDialog->setWindowTitle(QApplication::translate("HelloDialog", "Dialog", 0, QApplication::UnicodeUTF8)); label->setText(QApplication::translate("HelloDialog", "Hello World! \344\275\240\345\245\275Qt\357\274\201", 0, QApplication::UnicodeUTF8)); } // retranslateUi }; namespace Ui { class HelloDialog: public Ui_HelloDialog {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_HELLODIALOG_H
(1)直接使用Ui::HelloDialog类在主函数中定义对象
main.c
#include "ui_hellodialog.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QDialog w; Ui::HelloDialog ui; ui.setupUi(&w); w.show(); return a.exec(); }
(2)定义新类,在新类中定义一个Ui::HelloDialog的子对象,使用子对象加载该界面。
mywidget.h
#ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> namespace Ui { class MyWidget; } class MyWidget : public QWidget { Q_OBJECT public: explicit MyWidget(QWidget *parent = 0); ~MyWidget(); private: Ui::MyWidget *ui; //定义子对象 }; #endif // MYWIDGET_H
mywidget.cpp 在这里用子对象加载界面
#include "mywidget.h" #include "ui_mywidget.h" #include <QDialog> //鍖呭惈澶存枃浠 MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget) { ui->setupUi(this); QDialog *dialog = new QDialog(this); dialog->setModal(true); dialog->show(); } MyWidget::~MyWidget() { delete ui; }main.cpp
#include <QApplication> #include "mywidget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MyWidget w; w.show(); return a.exec(); }
(3)派生新类,继承Ui::HelloDialog类
hellodialog.h
#ifndef HELLODIALOG_H #define HELLODIALOG_H #include <QDialog> #include "ui_hellodialog.h" //不用Ui::Hellodialog 来定义子对象,因此不再需要前置声明了 //namespace Ui { // class HelloDialog; //} class HelloDialog : public QDialog, public Ui::HelloDialog { Q_OBJECT public: explicit HelloDialog(QWidget *parent = 0); signals: public slots: }; #endif // HELLODIALOG_H
hellodialog.cpp
#include "hellodialog.h" #include "ui_hellodialog.h" HelloDialog::HelloDialog(QWidget *parent) : QDialog(parent), Ui::HelloDialog() { setupUi(this); }
main.cpp
#include <QApplication> #include "hellodialog.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); HelloDialog w; w.show(); return a.exec(); }
以上代码经验证无误,相同的运行结果,如下:
相关文章推荐
- 使用Eclipse3.2(MyEclipse)+ abator自动生成iBatis代码以及配置文件的方法
- qmake使用方法(自动生成Makefile文件)
- QT:直接使用ui文件生成h文件的方法
- qmake使用方法(自动生成Makefile文件)
- 使用Mybatis Generator结合Ant脚本快速自动生成Model、Mapper等文件的方法
- java笔记之使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件2种方法
- 使用生成后事件(将一些文件自动放入Bin目录下面)
- 后台生成HTML时显示中文件方法。解决IE8显示界面的兼容
- iTEXT生成PDF文件使用方法 实例 示例 Servlet输出PDF文档方法
- 一种使用Windows批处理文件自动切换笔记本工作模式的方法;
- 不使用WxSmith和WxFormBuilder生成界面,手工输写基于WxWidgets程序的配置方法
- 使用autotools工具自动生成makefile文件
- 程序集版本最后一位使用SVN版本号的自动生成方法
- 学习使用AutoMake1.9的自动生成工程文件(一)——网络文章摘要
- 使用jxl,Servlet,JSP 动态生成excel文件并提示下载的简单方法
- Windows 2000下使用磁盘复制生成自动应答文件
- 使用start命令自动为ArcGIS runtime导入许可文件 无界面
- 程序集版本最后一位使用SVN版本号的自动生成方法
- 转载:如何使用XCodeFactory自动生成XML配置文件和对应的解析类
- Itext 生成 pdf文件使用方法: