Receiving signals with arguments in QML from C++
Jump to navigation
Jump to search
IMPORTANT: The content of this page is outdated. Reason: Qt Quick 1 If you have checked or updated this page and found the content to be suitable, please remove this notice. |
The example code below shows how you can receive signals with arguments in QML from C++. The important thing to notice in the example is that the signal's argument needs to be named identically in QML and in C++. So in this example it needs to be referred to as "text" both places, otherwise you will receive errors.
main.cpp
#include <QtGui>
#include <QtDeclarative>
class Person : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE void triggerEvent(QString text) {
emit somethingHappened(text);
}
Person() {
startTimer(1000);
}
void timerEvent(QTimerEvent *e) {
QString text = "The text";
triggerEvent(text);
}
signals:
void somethingHappened(QString text);
};
#include "main.moc"
int main(int argc, char** argv)
{
QApplication app(argc, argv);
qmlRegisterType<Person>("People", 1, 0, "Person");
QDeclarativeView view;
view.setSource(QUrl::fromLocalFile("main.qml"));
view.resize(200,100);
view.show();
return app.exec();
}
main.qml
import People 1.0
import QtQuick 1.0
Person {
id: myPerson
onSomethingHappened: {
console.log(" something happened " +text);
}
}