我不太了解Qt Designer
。我已经使用它有一段时间了,但我仍然总是手动编辑。ui文件。
在Qt的每一个教程中都可以看到,当你创建一个GUI时,你要做的第一件事就是子类化QMainWindow
-例如,为了捕获和重新定义closeEvent()
函数。
然而,在Qt设计器中不可能子类化("提升")QMainWindow
-你可以用许多其他类来做,但不是这个。
我通常做的是编辑。ui文件并更改:
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
由:< widget class="MyMainWindow" name="MainWindow">
这样我的代码可以在我的代码中正确地子类化QMainWindow
:
class MyMainWindow(QMainWindow, object):
''' I can redefine closeEvent here! '''
很明显,这很奇怪——我可能错过了一些关于如何正确使用Designer的方法。但是我找不到任何解释。
为什么不可能在设计器中子类化QMainWindow
,或者如何以不同的方式构建我的应用程序以避免对它的需要?
谢谢
一般不需要提升UI树的根元素。如果使用UI文件正确初始化类,则可以不使用它重新定义closeEvent
。
我知道这是旧的。我也遇到了同样的问题。我想在子窗口中使用对接功能。当我尝试推广QMinWindow时,我没有在列表中看到它。然后我试着在下拉列表中使用QWidget,它神奇地通过了。
这是我的经验