首页 > 解决方案 > 如何多次询问来自 QML 对话框的输入?

问题描述

我对 Qt 不是很有经验,而且我在做我想做的事时遇到了麻烦。

在我的应用程序中,我在磁盘上搜索带有密码的存档文件(该部分有效),并且每次找到一个新的加密存档时,我都想向用户询问密码。

如果我在用户没有提供任何密码的情况下找到多个文件,我希望第一个密码的对话框保持可见,直到给出该密码,然后可以显示下一个密码的对话框,依此类推。

我使用某种队列来记住哪些档案需要密码,并且我试图显示和隐藏一个包含每个档案信息的独特对话框(实际上是一个弹出窗口),并从里面的 TextField 获取密码。与此同时,我的应用程序正在 c++ 代码中执行其他操作,例如搜索存档并在给定密码正常时提取它们。

我的问题是它并没有真正起作用。对话框第一次显示,我得到了第一个密码,但对话框没有显示下一个密码。有时我可以在几毫秒内再次看到该对话框,然后它会在没有用户交互的情况下消失。我的应用程序被阻止,因为没有未经询问的密码就无法继续。

我知道我做错了什么,但我不明白到底是什么。任何人都可以帮忙吗?

我不知道我是否很清楚,英语(显然)不是我的母语。

标签: c++qtqml

解决方案


我发现了我的错误。

我做了一个基于 Popup 的组件。在 Check 或 Skip 按钮的 onClicked 函数中,我做了两件事:发送接受()或拒绝()来触发自定义操作,然后关闭对话框。

我是按这个顺序做的,所以接受或拒绝的操作,其中包括触发“下一个”密码对话框的可见性,发生在关闭事件之前,它将对话框可见性设置为 false。

我换了顺序,好多了。我现在觉得有点傻,但至少我找到了。


推荐阅读