如何覆盖Qt中缩放按钮的默认行为

时间:2013-08-07 14:59:53

标签: macos qt pyqt pyqt5

我在Python(PyQt5)中使用Qt5编写了一个应用程序。

我想覆盖缩放的默认行为(左上角为绿色“+”),因此它将设置适当的窗口大小,而不是最大化它以覆盖所有可用空间。

我试图覆盖showMaximize,但从未调用过该方法。我的窗口是QWidget的子类,没有设置任何额外的窗口标志(即使用默认值)。

如何覆盖该事件或如何在用户点击该按钮后告诉我想要设置的布局系统大小?

1 个答案:

答案 0 :(得分:1)

您无法覆盖showMaximized,因为它不是虚拟的。无法覆盖此操作。但您可以覆盖changeEvent。当用户最大化窗口时将调用它。您可以重置正常窗口的位置并调整其大小。

void MyWidget::changeEvent(QEvent *e) {
  QWidget::changeEvent(e);
  if (e->type() == QEvent::WindowStateChange) {
    if (isMaximized()) {
      showNormal();
      resize(200, 200);
      move(100, 100);
    }
  }
}