【问题标题】:QWidget doesn't close when main window is closed关闭主窗口时 QWidget 不关闭
【发布时间】:2013-05-09 18:27:21
【问题描述】:

我正在尝试创建一个主窗口 (QWidget),当单击按钮时会打开一个新的 QWidget,但是当我关闭主窗口时,最近打开的 QWidget 不会关闭。

ma​​in.cpp

QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();

ma​​inwindow.cpp(父级)

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

out.cpp(子级)

Out::Out(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Out)
{
    ui->setupUi(this);

}

【问题讨论】:

  • 能贴出代码吗?
  • 字数很多,不知道该发哪一部分。
  • 我建议你写一个尽可能小的例子来重现问题,然后发布。但是对于初学者来说,你的 main.cpp 是什么样的?

标签: c++ qt qwidget


【解决方案1】:

我怀疑你正在寻找Qt::WA_QuitOnClose

使 Qt 在最后一个具有该属性的小部件时退出应用程序 set 已接受 closeEvent()。这种行为可以用 QApplication::quitOnLastWindowClosed 属性。默认情况下这个 为 Qt::Window 类型的所有小部件设置属性。

在这种情况下,您可能应该调用:

myWidget->setAttribute( Qt::WA_QuitOnClose, false );

【讨论】:

    【解决方案2】:

    这是给 Python 的

    尝试创建如下函数

    def func_quit_all_windows():
      sys.exit()
    

    记得import sys

    当按钮被点击时调用函数

    btn.clicked.connect(func_quit_all_windows)
    

    【讨论】:

      猜你喜欢
      • 2019-05-24
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 2012-04-17
      • 2012-12-15
      • 1970-01-01
      相关资源
      最近更新 更多