2011-05-02 45 views
3

在我的QT C++应用程序中,我使用2个按钮(OK/CANCEL)调用QML ModalDialog,它可以在屏幕上正确显示,因此在那里没有问题。从QML模式对话框中检索值的最佳方法

但是我很努力地找到一种方法来检索我的QT C++应用程序中哪个按钮被按下。

我无法以某种方式“冻结”时,我所说的QML ModalDialog,在那里等待,直到用户按OK键或取消按钮 什么,我看到的是,应用程序调用QML ModalDialog,并立即退出该部分,继续。

QMetaObject :: invokeMethod可以调用一个QML函数并有一个返回值,但它不会等待用户按下其中一个按钮,它只是立即退出,所以没用。

我想在我的应用程序的多个地方使用这个QML ModalDialog(QML的模态对话框 可以从我的QT C++应用程序通过不同的文本),所以我一直在寻找这一个通用的解决方案。

基本上和一般来讲我要找的是这样的:

C/C++ RETURN_VALUE = QML_Modal_Dialog(....)

有人能指出我在正确的方向?谢谢

回答

1

QML模式对话框有两个信号'接受'和'取消'。如果您在代码中为这两个信号提供处理程序,您将能够知道哪个按钮被按下。 你可以参考下面的参考。

Modal Dialog Ref 1

Modal Dialog Ref 2

希望这有助于!

0

尽管问题太旧,也许我的回答会帮助别人。

我在QML中遇到了与Dialogs相同的问题。您可以用命令的方式来思考它,而QML是一种声明式语言,它不允许您停止程序流并等待用户的选择。 由于Purnima建议您应该使用信号处理程序(您可以在Qt 5.6 here中找到它们的列表)。将一些应用程序的逻辑移至信号处理程序 。

例如 - 如果在对话框中根据用户的选择执行你的函数a()你应该改为调用它的对话框里面的信号处理(例如onAcceptedonRejected)基于信号处理的类型,两个不同的参数。把它看成是分成两股流。

相关问题