2

我有一个包含一堆子类 QSpinBox 的子类 QDialog。单击旋转框时,您可以在其中使用按钮输入数字的小键盘(另一个 QDialog)。两个 QDialog 都是通过调用 QDialog::exec(); 来激活的。

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

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

4

2 回答 2

3

QDialog 1 设置为 Qt::Popup,QDialog 2 默认设置为 Qt::Dialog。弹出窗口会关闭各种事件。我也将 QDialog 2 的标志设置为 Qt::Popup,这似乎不再关闭 QDialog 1。

于 2010-02-18T16:31:43.230 回答
2

你口头描述代码的方式,你不应该看到你描述的问题。如果没有看到您的实际代码,我无法猜测导致问题的原因。但是,我可以肯定地说我已经exec()在对话框 A 上运行,然后exec()在对话框 B 上运行(通过按钮),并且在对话框 B 退出时对话框 A 保持可用。

于 2010-02-17T17:04:31.593 回答