学习笔记之qt4程序中引入自定义窗口部件之多继承方式
来源:互联网 发布:linux vi 保存退出 编辑:程序博客网 时间:2024/06/05 09:13
多继承中,需要从标准的 QWidget类和Qt designer绘制的界面类继承。这样,继承自qt标准的窗口部件类和界面类的子类就可以直接访问其父类的公有成员和保护成员。
1、用qt creator创建一个名为mulinherit的empty qt project工程并把这个工程存放在一个名为findfile的文件夹中(用qt designer创建的findfileform.ui文件也存放在这个文件夹中)。
2、右击该工程将已有的findfileform.ui文件添加到该工程中。
3、在该工程中添加文件findfileform.cpp,findfileform.h,mulinherit.cpp,代码如下:
注:多继承的情况下,Qt的类必须要放在其他类的前面,即必须先继承QWidget,再继承Ui_FindFileForm。这是因为元对象编译器假定第一个继承的类是QObject的子类。此外,Qt不支持对QObject(或QObject子类)的虚继承。
注:与单一继承方式使用ui文件不同的是,多继承方式下可以在类的实现代码中直接引用qt designer绘制的字窗口部件。
在应用程序中,多继承方式使用qt designer中绘制的界面窗口部件比单一继承方式更简单直接;同直接使用方式相比较,多继承方式更具代码的可扩展性。因此,在应用程序中,一般的都使用多继承方式引用qt designer绘制的用户界面对象。
1、用qt creator创建一个名为mulinherit的empty qt project工程并把这个工程存放在一个名为findfile的文件夹中(用qt designer创建的findfileform.ui文件也存放在这个文件夹中)。
2、右击该工程将已有的findfileform.ui文件添加到该工程中。
3、在该工程中添加文件findfileform.cpp,findfileform.h,mulinherit.cpp,代码如下:
findfileform.h
#ifndef FINDFILEFORM_H#define FINDFILEFORM_H#include<QStringList>#include<QDir>#include"ui_findfileform.h"class CFindFileForm:public QWidget, public Ui_FindFileForm{ Q_OBJECTpublic: CFindFileForm(QWidget *parent=0);};#endif // FINDFILEFORM_H
注:多继承的情况下,Qt的类必须要放在其他类的前面,即必须先继承QWidget,再继承Ui_FindFileForm。这是因为元对象编译器假定第一个继承的类是QObject的子类。此外,Qt不支持对QObject(或QObject子类)的虚继承。
findfileform.cpp
#include<QtGui>#include"findfileform.h"CFindFileForm::CFindFileForm(QWidget *parent) :QWidget(parent){ setupUi(this); statusLabel->setText(tr("就绪")); resultLabel->setText(tr("找到0个文件")); nameComboBox->setEditText("*"); dirComboBox->setEditText(QDir::currentPath()); dirComboBox->addItem(QDir::currentPath()); sensitiveCheckBox->setEnabled(false); stopPushButton->setEnabled(false);}
注:与单一继承方式使用ui文件不同的是,多继承方式下可以在类的实现代码中直接引用qt designer绘制的字窗口部件。
mulinherit.cpp
#include<QtGui/QApplication>#include<QtCore/QTextCodec>#include"findfileform.h"int main(int argc,char *argv[]){ QApplication app(argc,argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("gb2312")); Q_INIT_RESOURCE(findfile); CFindFileForm form; form.show(); return app.exec();}
在应用程序中,多继承方式使用qt designer中绘制的界面窗口部件比单一继承方式更简单直接;同直接使用方式相比较,多继承方式更具代码的可扩展性。因此,在应用程序中,一般的都使用多继承方式引用qt designer绘制的用户界面对象。
mulinlerit.pro
FORMS += \ ../findfileform.uiRESOURCES += \ ../findfile.qrcHEADERS += \ findfileform.hSOURCES += \ findfileform.cpp \ mulinherit.cpp
0 0
- 学习笔记之qt4程序中引入自定义窗口部件之多继承方式
- 学习笔记之qt4程序中引入自定义窗口部件之单一继承方式
- 学习笔记之qt4程序中引入自定义窗口部件之直接使用方式
- QT程序中引入designer自定义窗口部件
- [Qt4] 自定义窗口部件
- Qt学习笔记(三) 自定义窗口部件
- Qt学习之自定义窗口部件
- Qt小程序(三)-继承Qt窗口部件创建自定义部件
- C++ GUI Qt4编程-创建自定义窗口部件
- QT学习笔记:窗口部件
- QT创建自定义窗口部件笔记
- Android学习笔记之自定义View(钢琴键盘部件)
- qt vs2010中提升窗口部件 自定义部件类
- 自定义QT窗口部件外观之QStyle
- QT5中如何自定义窗口部件
- appwidget 窗口小部件学习笔记
- Qt学习笔记--窗口部件(Widget)
- Qt学习笔记--窗口部件(Widget)
- JAVA中int、String的类型转换
- react项目搭建
- 汐月教育之理解TensorFlow(二)基础理解
- 香农理论在密码学中的应用
- 一个无济于事的道歉
- 学习笔记之qt4程序中引入自定义窗口部件之多继承方式
- 使用Viewpager Indicator实现图片无限轮播
- 生产环境的变更管理
- 总结react中遇到的坑和一些小的知识点
- C程序设计 例题 三个数字从小到大排序(需给定)
- Eclipse-JDT的使用
- Unity在安卓平台的应用间跳转
- NYOJ 第84题 n!的0的个数
- Leetcode之 Two Sum