Qt开发:如何将QDialog 类转换为QWidget
来源:互联网 发布:php微信群发接口开发 编辑:程序博客网 时间:2024/06/05 07:49
http://blog.csdn.net/taoerit/article/details/30317959?locationNum=7&fps=1
1 搭建实验环境-----目的是 将 QDialog 类转变为 QWidget类
a 使用qt creator 创建项目工程 Dialog_to_Widget, 主界面用 MainWindow类,另外2个界面用QDialog类和QWidget类。
b 在主界面上创建2个pushButton ,DialogpushButton 和Widget pushButton ,主要用于弹出Dialog 和Widget界面。
界面如下:
2 现在开始将Dialog改为QWidget类
3 编译一下,报错
C:\Users\Lion\Desktop\1\Dialog_to_Widget-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK____\..\Dialog_to_Widget\dialog.cpp:8: 错误:no matching function for call to 'Ui::Dialog::setupUi(Dialog* const)'
4 注销掉 dialog.cpp 的这行
// ui->setupUi(this);
5 编译过了,但是Dialog 不出界面,Widget可以。
6 修改ui_dialog.h 文件
void setupUi(QDialog *Dialog) -----> void setupUi(QWidget *Dialog)
void retranslateUi(QDialog *Dialog)-----> void retranslateUi(QWidget *Dialog)
7 启用步骤 4 , ui->setupUi(this);
8 编译运行,出现如下情况
Dialog 内嵌在 MainWindow内,如果你先点Dialog 那么Widget不能点。
9 解决方法
源代码
void MainWindow::on_DialogpushButton_clicked()
{
Dialog *d=new Dialog(this);
d->show();
}
改为
void MainWindow::on_DialogpushButton_clicked()
{
Dialog *d=new Dialog; //原因Dialog现在已经是QWidget类了
d->show();
}
10 编译运行--已经成功变为QWidget, 注意观察Dialog 有最小化,最大化 关闭框
11 如果要拿到 QT+VS2010环境中编译,打开vs2010,选择Qt插件打开刚才的工程 *.pro文件。
出现如下错误
1>dialog.cpp(8): error C2664: “Ui_Dialog::setupUi”: 不能将参数 1 从“Dialog *const ”转换为“QDialog *”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
解决方法: 重复步骤6就可以啦,或者将先前的ui_dialog.h文件覆盖当前的,如果你重新生成要再次修改。
- Qt开发:如何将QDialog 类转换为QWidget
- 如何将QDialog 类转换为QWidget
- Qt之QWidget/QDialog/QMainWindow
- Qt-Base Class?QMainWindow?QWidget?QDialog
- QT中QMainWindow、QWidget、QDialog的区别
- Qt窗口之QMainWindow、QDialog、QWidget
- Qt窗口之QMainWindow、QDialog、QWidget
- QT中QWidget、QDialog及QMainWindow的区别
- QT中QWidget、QDialog及QMainWindow的区别
- Qt中QWidget、QMainWindow、QDialog 三者区别
- QT中QWidget、QDialog及QMainWindow的区别
- QT中QWidget、QDialog及QMainWindow的区别
- QT中QWidget、QDialog及QMainWindow的区别
- QT中QWidget、QDialog及QMainWindow的区别
- QT中QWidget、QDialog及QMainWindow的区别
- QT学习笔记之QWidget,QMainWindow和QDialog的区别
- QT中QWidget、QDialog及QMainWindow的区别
- QT中QWidget、QDialog及QMainWindow的区别
- 类、方法、成员变量和局部变量的可用修饰符
- Docker mongoDB 单机安装办法
- 使用DBCA 管理PDB
- 【C#】Readonly和Const的区别
- Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null objec
- Qt开发:如何将QDialog 类转换为QWidget
- 【玩转Golang】slice切片的操作——切片的追加、删除、插入等
- RxJava
- java中实现多态的机制是什么?
- 安装mysql
- Ubuntu配置OpenCV 2.4.9
- 缓冲区操作
- 通俗易懂解释负载均衡
- 计算从现在到凌晨00:00还剩余多少秒(redis缓存经常使用)