3

在我的 QT C++ 应用程序中,我调用带有 2 个按钮(确定/取消)的 QML ModalDialog,它在屏幕上正确显示,因此没有问题。

但是,我正在努力寻找一种方法来在我的 QT C++ 应用程序中检索按下了哪个按钮。

当我调用 QML ModalDialog 时,我无法以某种方式“冻结”,等待用户按下 OK 按钮或 Cancel 按钮 我看到的是应用程序调用 QML ModalDialog,然后立即退出该部分并继续。

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

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

基本上和一般来说,我正在寻找这样的东西:

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

有人可以指出我正确的方向吗?谢谢

4

2 回答 2

1

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

模态对话框参考 1

模态对话框参考 2

希望这可以帮助!

于 2011-05-03T02:20:08.920 回答
0

尽管这个问题太老了,但也许我的回答会对其他人有所帮助。

我在 QML 中的对话框中遇到了同样的问题。您以命令式的方式考虑它,而 QML 是一种声明性语言,不允许您停止程序流并等待用户的选择。正如 Purnima 建议的那样,您应该使用信号处理程序(您可以在此处找到 Qt 5.6 的列表)。将应用程序的一些逻辑移至信号处理程序。

例如 - 如果您的函数a()是根据用户在对话框中的选择执行的,您应该改为在对话框中的信号处理程序(例如onAcceptedonRejected)中调用它,并根据信号处理程序的类型使用两个不同的参数。可以将其视为将流量分成两个流。

于 2016-04-20T09:26:37.800 回答