我有一个子类化的QDialog,包含一堆子类化的QSpinBox。当点击一个spinbox时,一个小键盘(另一个QDialog),你可以用按钮输入数字。两个QDialog都是通过调用QDialog::exec()来激活的;
但是,当打开第二个QDialog时,第一个会关闭。我已经浏览过了,并注意到第一个QDialog还没有结束。在我完成QDialog 2之后,QDialog 1发出" QDialog ::Rejected“。我希望QDialog 1根本不结束,它需要用输入的值更新spinbox,并打开更多的QDialog供用户稍后编辑其他spinbox。
我认为这与QDialog 1的eventloop被QDialog 2的eventloop杀死有关。我试过在QDialog 2上使用QDialog::show。这个小部件弹出了一会儿(毫秒),但没有保持活动状态。QDialog 1也会立即关闭。
发布于 2010-02-19 00:31:43
QDialog 1默认设置为Qt::Popup,QDialog 2默认设置为Qt::Dialog。弹出窗口会关闭一系列事件。我也将QDialog 2的标志设置为Qt::Popup,这似乎不会再关闭QDialog 1。
发布于 2010-02-18 01:04:32
以您口头描述代码的方式,您应该看不到您所描述的问题。在没有看到实际代码的情况下,我无法猜测是什么导致了问题。但是,我可以肯定地说,我已经在对话框A上运行了exec()
,然后在对话框B上运行了exec()
(通过按钮),并在对话框B退出时使对话框A保持可用状态。
https://stackoverflow.com/questions/2280972
复制相似问题