QT中将QWidget提升为QMainWindow

Posted 大作家佚名

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT中将QWidget提升为QMainWindow相关的知识,希望对你有一定的参考价值。

简介

背景是曾经开发了一款软件,基类使用的是QWidget,随着软件的功能增加QWidget已经无法摆下太多的部件。因此,需要转换到QMainWindow下使用菜单和工具箱容纳更多的功能。

项目介绍:UI采用Qt设计师通过部件拖拽生成和布局。下面记录如何将这类的工程转化为QMainWindow基类。这里使用一种最简单粗暴有效的方式。

步骤

新建一个QMainWindow基类窗口

打开Qt设计师新建一个QMainWindow基类的窗口。

将默认类名MainWindow修改为自己的类名,下图右下角红框中是我工程里的QWidget基类的类名。这里保持一致会减少后续的代码修改量。改完类名后保存,文件名自己起一个合适的就行。

打开QWidget基类的UI文件,全选所有部件复制到新建的QMainWindow基类UI文件中。如下图所示,上面的UI是以QMainWindow为基类的UI文件。


将上面修改好的UI文件导入VS2013,如果是Qt Creator应该可以直接加载。导入后会自动生成相应的头文件。

修改代码

需要修改的代码,增加头文件

#include <QtWidgets/QMainWindow>		 //增加QMainWindow头文件
#include "ui_dinirawdatasimulation_mw.h" //自己UI文件导入后新生成的头文件

将下图中的QWidget修改为QMainWindow

将下图中的QWidget修改为QMainWindow

结语

经过上面的步骤,重新编译工程就可以了。然后就可以进一步修改新的窗口并调试功能了。

以上是关于QT中将QWidget提升为QMainWindow的主要内容,如果未能解决你的问题,请参考以下文章

C ++ QT如何从QMainWindow布局访问QWidget的公共类成员

QT QMainWindow窗口中添加 QWidget容器类 应该怎么添加?

Qt怎样设置QMainWindow窗口中嵌套的QWidget子窗口的背景色

如何在qt中将字符串转换为qwidget

Qt,两个QWidget对象之间的简单连接

如何从父级不是 QMainWindow 的 QWidget 访问 QMainWindow