我已经在 Qt Designer 中为我的应用程序创建了第二个窗口。 我读到 QMainWindow 将是第二个窗口的错误类(基本上应该只是某种对话框),所以我想更改基类。
我的问题是:
- 有没有办法在不创建新窗口并将我的代码复制到新文件中的情况下更改基类?
- 谁能解释一下何时使用 QMainWindow、QDialog 和 QWidget?对于 Qt 中这三个基类之间的差异,我没有找到很好的解释。
最佳答案
要更改基类,您只能将头文件中的
: public QMainWindow
更改为: public QWidget
(反之亦然)当然还有 *.cpp。基本上这三个都是 QWidget,每个都有特殊的功能或用于特定的目的。据我所知,QMainWindow 有工具栏、菜单栏和停靠栏,QDialog 将始终显示为单独的窗口(例如阻塞、非阻塞等),而 QWidget 本身是基类。 IE。 QPushButton、QCombobox 也是从 QWidget 派生的。在我看来,最好只使用一个 QMainWindow,因为它应该是用户交互/导航的中心点
编辑: 我忘了提到 UI 文件也必须更改,即通过使用文本编辑器更改行(我认为是第 4 行)
<widget class="QMainWindow" name="YourClassName">
到
<widget class="QWidget" name"YourClassName">
并删除所有与 QMainWindows 相关的部分(菜单栏、工具栏...)以及中央小部件的封闭标签。
感谢 alexisdm 的提示。
关于c++ - Qt 设计器 : Changing the base class of a window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17605046/