我有一个难以解决的错误。我有两个窗户。
窗口A是包含文本框(在此简化版本中)的主窗口。通过单击该文本框的内容(窗口B作为小键盘出现),用户可以对其进行编辑。除了数字按钮外,还有2个其他按钮,即Enter和Done。如果用户更改值并按Enter,则文本框中的值将立即更新。然后按完成将退出窗口。
但是,如果用户在没有先按Enter的情况下按下完成按钮,则会出现一个模式对话框,询问用户是否要保存该值。做出选择后,模型对话框和窗口B将退出。
当用户输入一个值并按下“完成”按钮时,就会发生该错误。当出现模式对话框时,窗口B移到窗口A后面。应该发生的情况是窗口B停留在窗口A的顶部。有趣的是,当我单步执行代码时,此错误从未发生,这使查明错误变得很棘手。 >
以前有没有人遇到过这个问题?
我目前正在最新版本的Linux Mint上运行Qt 5.9(截至撰写本文时)
此外,我还准备了一个示例项目来演示此错误。由于它的复杂性较大,因此无法将其放入1个文件中。如果需要的话,我可能会在本周找到一些时间将所有内容移动到一个文件中。但是,如果允许,我可以发布Dropbox链接。
答案 0 :(得分:1)
问题可能出在[QDialog] [1]类的父子关系设置错误。
以下段落对于您的应用程序可能至关重要,但是,如果您没有显示最小重复性的示例,那么很难说。
注意:对话框的父关系并不意味着 对话框将始终堆叠在父窗口的顶部。确保 对话框始终位于最上方,使对话框成为模态。这也是 适用于对话框本身的子窗口。确保孩子 对话框的窗口位于对话框顶部,使子级 Windows模式。