本文主要是介绍Qt5.8 将工程基类由QWidget替换成QMainWindow,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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,分享给有需要的你们。
这篇关于Qt5.8 将工程基类由QWidget替换成QMainWindow的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!