max*_*esa 7 qt designer pyside qmainwindow
有一些我不明白的事情Qt Designer.我一直在使用它已经有一段时间了,但我仍然总是手动编辑.ui文件.
正如在Qt的每个教程中都可以看到的那样,在创建GUI时,你要做的第一件事就是子类化QMainWindow- 例如,为了捕获和重新定义closeEvent()函数.
但是,不可能QMainWindow在Qt Designer中进行子类化("提升")- 您可以使用许多其他类来完成它,但不能使用此类.
我通常做的是编辑.ui文件并更改:
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
Run Code Online (Sandbox Code Playgroud)
通过:
< widget class="MyMainWindow" name="MainWindow">
Run Code Online (Sandbox Code Playgroud)
这样我的代码可以QMainWindow在我的代码中正确子类化:
class MyMainWindow(QMainWindow, object):
''' I can redefine closeEvent here! '''
Run Code Online (Sandbox Code Playgroud)
显然,这很奇怪 - 我可能会错过一些关于使用Designer做到这一点的正确方法.但我找不到任何解释.
为什么不能QMainWindow在Designer中进行子类化,或者如何以不同方式构造我的应用程序以避免需要它?
谢谢