QDialog弹出另一个QDialog

时间:2010-02-17 13:31:29

标签: qt touchscreen qdialog qeventloop

我有一个子类QDialog包含一堆子类QSpinBox。单击旋转框时,键盘(另一个QDialog)可以使用按钮输入数字。通过调用QDialog :: exec();

激活两个QDialog

然而,当打开第二个QDialog时,第一个关闭。我已经介入它并注意到第一个QDialog还没有结束。 QDialog 1在完成QDialog 2之后发出“QDialog :: Rejected”。我想要的是QDialog 1根本没有结束,它需要用输入的值更新spinbox并为其他spinbox打开更多的QDialog用户想稍后编辑。

我认为这与QDialog 1的eventloop被QDialog 2的eventloop杀死有关。我尝试在QDialog 2上使用QDialog :: show。小部件弹出片刻(毫秒)但不保持活动状态。 QDialog 1也会立即关闭。

2 个答案:

答案 0 :(得分:3)

QDialog 1设置为Qt :: Popup,默认情况下QDialog 2设置为Qt :: Dialog。弹出窗口关闭了各种各样的事件。我已经将QDialog 2的标志设置为Qt :: Popup,这似乎不再关闭QDialog 1.

答案 1 :(得分:2)

您口头描述代码的方式,您不应该看到您描述的问题。在没有看到您的实际代码的情况下,我无法猜测导致问题的原因。但是,我可以肯定地说,我在对话框A上运行exec(),然后在对话框B(从一个按钮)运行exec()内部,并在对话框B退出时保持对话A保持可用。 / p>