我正在讨论Qt和QML。
所以我希望有一个阻塞调用来显示一个对话框并检索用户输入。保证调用不在当前UI线程上。
我有使用QML创建的QDeclarativeView对象。我可以使用show method()显示它。但现在我想阻止,直到用户点击确定/取消,此时我将从对象中提取信息并将信息返回给调用者。
所以问题是:
答案 0 :(得分:3)
使用连接到QDialog :: exec()插槽的Qt :: BlockingQueuedConnection。
答案 1 :(得分:1)
如果从QDialog开始,可以使用exec()方法阻止,直到对话框被解除。您可以将声明性视图放在对话框中。
如果这是合理使用Qt,则取决于您的需求。在许多情况下,用户会更喜欢非模态对话框,他们可以在打开对话框的情况下继续做其他事情。阻塞函数通常不是呈现这种非模态窗口的最方便的方式。通常,“正确”的做法是将信号连接到处理程序,该处理程序在您的对话框被解除时执行。