有一些我不明白的地方Qt Designer
。我已经使用它一段时间了,但我仍然总是手动编辑 .ui 文件。
正如在 Qt 的每个教程中都可以看到的那样,创建 GUI 时要做的第一件事就是子类化QMainWindow
——例如,为了捕获和重新定义closeEvent()
函数。
但是,在 Qt Designer 中子类化(“提升”)是不可能的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
在 Designer 中进行子类化,或者如何以不同的方式构建我的应用程序以避免需要它?
谢谢