Qt Designer无法推广QMainWindow

时间:2013-06-10 14:57:13

标签: qt pyside designer qmainwindow

我对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做正确方法的一些方法。但我找不到任何解释。

为什么不能在Designer中继承QMainWindow,或者如何以不同的方式构建我的应用程序以避免需要它?

由于

2 个答案:

答案 0 :(得分:4)

您通常不需要提升UI树的根元素。如果使用UI文件正确初始化类,则可以在没有它的情况下重新定义closeEventThis answer显示了如何正确执行此操作。

答案 1 :(得分:2)

我知道这是旧的。我不知怎的遇到了同样的问题。我想在子窗口中使用对接功能。当我尝试推广QMinWindow时,我没有在列表中看到它。然后我尝试在下拉列表中使用QWidget,它神奇地经历了。

只是我的经历。