Qt5.8 将工程基类由QWidget替换成QMainWindow

本文介绍了一种将Qt工程的基类从QWidget转换为QMainWindow的方法,包括修改头文件、UI界面文件及调整布局管理器的具体步骤,以适应需要使用dockWidget的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        QT新手,最近在写一个软件,一开始是基于QWidget写的,后续发现需要用到dockWidget,发现基类为QMainWindow的工程实现起来相当简单,所以想到将工程基类由QWidget替换成QMainWindow,在网上只找到了将基类从QDialog直接提升为QWidget窗口(原文链接:https://blog.csdn.net/herr_kun/article/details/90111280),主要做法如下:

1、将初始化时定义的基类从QDialog变为QWidget,头文件和cpp文件都需改动,头文件中还需要添加QWidget的头文件
2、修改UI界面的头文件ui_dialog.h(或者其他的名称),将其中的QDialog变为QWidget,应该有两处
3、修改UI界面 .ui文件,用常用的文本编辑器打开就行,比如sublinme打开,该文件不能再QT creater 中修改,所以用其他方式打开,将其中的class=‘QDialog’ 修改 为class=’QWidget‘,此处如不修改的话,UI界面就还是默认使用’QDialog’ ,那么第二步中做的就白费了,还会被重新修改回来。

     依葫芦画瓢,随意建了一个简单的工程,拖了几个控件,先按照上述步骤将工程中的QWidget替换成QMainWindow,然后根据QWidget和QMainWindow的区别,首先尝试修改了下ui_xxx.h文件:

1.添加QWidget *centralWidget;

2.添加centralWidget = new QWidget(QtGuiApplication1Class);
centralWidget->setObjectName(QStringLiteral("centralWidget"));

3.  verticalLayout = new QVBoxLayout(this);改为verticalLayout = new QVBoxLayout(centralWidget);

4. 最后添加QtGuiApplication1Class->setCentralWidget(centralWidget);

修改完后运行,成功,但是对应的.ui文件中的内容没有改变,用qt designer打开后,会显示警告。由于.h文件是由.ui文件来决定的,所以最终尝试修改.ui文件。

经过对比QMainWindow和QWidget工程,尝试修改,没想到改起来相当简单。

首先用文本编辑器打开.ui文件,其实就是xml文件,用记事本也行,但是此处我用的是UltraEdit(下载链接:https://download.csdn.net/download/weixin_37633951/11163298),用这个软件打开可以清楚的看到文件中的对其关系。如下图

找到布局管理器,上图红色框框,点击对应的黄色圆圈中的减号,将该布局管理器内的内容收缩

然后将centralWidget添加进去保存就可以了,如下图黄色框框

通过上述方法,成功将自己的工程的基类修改为QMainWindow,分享给有需要的你们。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值