【问题标题】:QDialog popping up another QDialogQDialog 弹出另一个 QDialog
【发布时间】:2010-02-17 13:31:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: qt touchscreen qdialog qeventloop


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢,关于事件循环的部分确实是死路一条。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多