QML中的MessageDialog
信號有問題。在我的MessageDialog
我有兩個按鈕是的和沒有。我想用信號連接每個按鈕。 這裏是我的QML文件:如何將QML信號與C++插槽連接?
import QtQuick 2.2
import QtQuick.Dialogs 1.1
Item{
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_OBJECT
public slots:
void cppSlot(const QString &msg) {
qDebug() << "Called the C++ slot with message:" << msg;
}
};
這裏是我如何使用這個主:
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
我試了很多t imes,但我無法使QML信號和C++插槽工作。 另外我試着從這裏的例子Qt doc並給我同樣的錯誤。
有人可以給我一個想法如何連接QRL信號和C + +插槽爲MessageDialog
?
你在哪裏定義了信號qmlSignal?不在'QObject * item = view.rootObject();' – xander
這是我第一次使用來自qml的信號工作,我真的不明白我應該多做些什麼。當按下按鈕時,它會發出一個應該是趕上C++,寫? – John
儘管如此,你可以調試你的'view.rootObject()',看看你的MessageDialog是不是你定義信號的地方。因此,無論是在你的根目錄中定義它,還是使用C++中的MessageDialog子對象來連接信號。 – xander