强制QDialog保持打开状态

Forcing QDialog to stay open

本文关键字:状态 QDialog 强制      更新时间:2023-10-16

当调用对话框的accept()插槽时,我应该如何最好地强制QDialog保持打开?我正在考虑重新实现该函数,以使对话框的执行返回而不隐藏对话框,但想知道是否有更好的方法来实现这一点。

比起使用QDialog,我更愿意使用QDockWidget来实现这个效果。

  • 删除允许移动dock的功能(QDockWidget::DockWidgetMovable)
  • 将dock小部件设置为浮动(setFloating(true))
  • 将dock小部件上的项目连接到主窗口上的适当信号和插槽

引用

  • Dock Widgets示例
  • <
  • QDockWidget文档/gh>

您需要使您的QDialog非模态,通过调用show而不是exec,并使用自定义信号而不是accept,因为accept关闭窗口。然后用exec调用后的代码将该信号连接到主窗口中的插槽。

在这种情况下,你应该保持一个引用/指针到你的QDialog某处(作为一个成员在你的主窗口类,或一个静态变量内的函数,打开它),以避免创建对话框的多个实例,你需要确保你只连接信号/槽一次。