在我的QT C ++应用程序中,我使用2个按钮(OK / CANCEL)调用QML ModalDialog,它在屏幕上正确显示,因此没有问题。
但是我很难找到一种方法来检索我的QT C ++应用程序中按下了哪个按钮。
当我调用QML ModalDialog时,我无法以某种方式“冻结”,等待用户按下OK按钮或取消按钮 我看到的是应用程序调用QML ModalDialog,并立即退出该部分并继续。
QMetaObject :: invokeMethod可以调用QML函数并具有返回值,但它不等待用户按下其中一个按钮,它只是立即退出,所以没有用。
我想在我的应用程序的几个地方使用这个QML ModalDialog(QML模式 对话框可以有我的QT C ++应用程序传递的不同文本),所以我正在寻找一个通用的解决方案。
基本上和通用的说法我正在寻找这样的东西:
C / C ++ return_value = QML_Modal_Dialog(....)
有人能指出我正确的方向吗?感谢
答案 0 :(得分:1)
QML模态对话框附带两个“已接受”和“已取消”的信号。如果您在代码中为这两个信号提供处理程序,您将能够知道按下了哪个按钮。 您可以参考以下内容作为参考。
希望这有帮助!
答案 1 :(得分:0)
尽管问题太旧了,但我的回答可能对其他人有帮助。
我在QML中遇到了与Dialogs相同的问题。你以命令的方式思考它,而QML是一种声明性语言,它不允许你停止程序流并等待用户的选择。 正如Purnima建议您应该使用信号处理程序(您可以找到Qt 5.6 here)的列表。将一些应用程序的逻辑移动到信号 处理程序。
例如 - 如果您的函数a()
是根据用户在对话框中的选择执行的,则应在其信号处理程序(例如onAccepted
或onRejected
)中的对话框内调用它两种不同的参数,基于信号处理程序的类型。把它想象成将流分成两个流。