迫使QDialog保持开放

时间:2011-08-20 01:31:37

标签: c++ qt qt4 qdialog

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

2 个答案:

答案 0 :(得分:2)

不是使用QDialog,而是使用QDockWidget完成效果。

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

<强>参考

答案 1 :(得分:2)

您需要通过调用QDialog代替show并使用自定义信号代替exec来使accept无模式,因为accept已关闭窗户。然后使用exec调用后的代码将该信号连接到主窗口中的插槽。

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