Qt错误,其中模型对话框移到主窗口后面

时间:2019-07-15 19:33:20

标签: c++ qt user-interface

我有一个难以解决的错误。我有两个窗户。

窗口A是包含文本框(在此简化版本中)的主窗口。通过单击该文本框的内容(窗口B作为小键盘出现),用户可以对其进行编辑。除了数字按钮外,还有2个其他按钮,即Enter和Done。如果用户更改值并按Enter,则文本框中的值将立即更新。然后按完成将退出窗口。

但是,如果用户在没有先按Enter的情况下按下完成按钮,则会出现一个模式对话框,询问用户是否要保存该值。做出选择后,模型对话框和窗口B将退出。

当用户输入一个值并按下“完成”按钮时,就会发生该错误。当出现模式对话框时,窗口B移到窗口A后面。应该发生的情况是窗口B停留在窗口A的顶部。有趣的是,当我单步执行代码时,此错误从未发生,这使查明错误变得很棘手。 >

以前有没有人遇到过这个问题?

我目前正在最新版本的Linux Mint上运行Qt 5.9(截至撰写本文时)

此外,我还准备了一个示例项目来演示此错误。由于它的复杂性较大,因此无法将其放入1个文件中。如果需要的话,我可能会在本周找到一些时间将所有内容移动到一个文件中。但是,如果允许,我可以发布Dropbox链接。

1 个答案:

答案 0 :(得分:1)

问题可能出在[QDialog] [1]类的父子关系设置错误。

以下段落对于您的应用程序可能至关重要,但是,如果您没有显示最小重复性的示例,那么很难说。

  

注意:对话框的父关系并不意味着   对话框将始终堆叠在父窗口的顶部。确保   对话框始终位于最上方,使对话框成为模态。这也是   适用于对话框本身的子窗口。确保孩子   对话框的窗口位于对话框顶部,使子级   Windows模式。