如何将QML信号与C插槽连接?

如何将QML信号与C插槽连接?,第1张

概述我在QML中遇到MessageDialog信号问题.在我的MessageDialog中,我有两个用于是和否的按钮.我想用信号连接每个按钮. 这是我的qml文件: import QtQuick 2.2import QtQuick.Dialogs 1.1Item{ MessageDialog { signal qmlYesSig(string msg) s 我在QML中遇到MessageDialog信号问题.在我的MessageDialog中,我有两个用于是和否的按钮.我想用信号连接每个按钮.
这是我的qml文件:

import QtQuick 2.2import QtQuick.Dialogs 1.1Item{    MessageDialog {        signal qmlYesSig(string msg)        signal qmlNoSig (string msg)        Title: "Send data?"        icon: StandardIcon.Question        text: "Do you want to save your data on the online platform?"        detailedText: "Click Yes "        standardbuttons: Standardbutton.Yes | Standardbutton.No        Component.onCompleted: visible = true        onYes: qmlYesSig("From yes")        onNo: qmlNoSig("From no")    }}

这是我的插槽

class MyClass : public QObject{    Q_OBJECTpublic slots:    voID cppSlot(const QString &msg) {        qDeBUG() << "Called the C++ slot with message:" << msg;    }};

以下是我在main中如何使用它:

qquickview vIEw(QUrl::fromLocalfile("window.qml"));QObject *item = vIEw.rootObject();AddData myClass;QObject::connect(item,SIGNAL(qmlSignal(QString)),&myClass,SLOT(cppSlot(QString)));vIEw.show();

它给了我错误:

C2665: ‘QObject::connect’: none of the 3 overloads Could convert all the argument types

我已经尝试了很多次但是我无法工作QML信号和C插槽.
此外,我从这里尝试了Qt doc的例子并给了我同样的错误.

有人可以告诉我如何为MessageDialog连接QML信号和C插槽吗?

解决方法 您的QML文件是:

Item{    MessageDialog {        signal qmlYesSig(string msg)        signal qmlNoSig (string msg)        [...]    }}

你的C代码是:

QObject *item = vIEw.rootObject();AddData myClass;QObject::connect(item,SLOT(cppSlot(QString)));

这意味着您正在QML文件的根项中查找名为“qmlSignal”的信号.
这个根项很简单

Item{}

如您所见,没有称为“qmlSignal”的信号.

您必须在根项目中定义信号并从消息框中发出它.

Item{    signal qmlSignal(string msg)    MessageDialog {        onYes: parent.qmlSignal("From yes")        onNo: parent.qmlSignal("From no")    }}
总结

以上是内存溢出为你收集整理的如何将QML信号与C插槽连接?全部内容,希望文章能够帮你解决如何将QML信号与C插槽连接?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1217684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存