Connect a complex signal from QML to Qt: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 7: | Line 7: | ||
The example code below shows how you can connect complex signals from QML to Qt. | The example code below shows how you can connect complex signals from QML to Qt. | ||
main.cpp | main.cpp | ||
<code> | |||
#include <QtGui> | |||
#include <QtDeclarative> | |||
class DeclarativeView : public QDeclarativeView | class DeclarativeView : public QDeclarativeView | ||
{ | |||
Q_OBJECT | |||
public: | |||
DeclarativeView(const QUrl & source) : QDeclarativeView(source) | |||
{} | |||
public slots: | |||
void testSlot(QString string1, QString string2) | |||
{ | |||
qDebug() << string1 << string2; | |||
} | |||
}; | |||
#include | #include "main.moc" | ||
int main(int argc, char **argv) | |||
{ | |||
QString file = "main.qml"; | |||
QApplication app(argc, argv); | QApplication app(argc, argv); | ||
DeclarativeView view(QUrl::fromLocalFile(file)); | |||
QDeclarativeItem '''item = qobject_cast | QDeclarativeItem '''item = qobject_cast<QDeclarativeItem'''>(view.rootObject()); | ||
QObject::connect(item, SIGNAL (viewClicked(QString , QString)), &view, SLOT (testSlot(QString, QString))); | |||
view.resize(200,200); | view.resize(200,200); | ||
view.show(); | |||
return app.exec(); | |||
} | |||
</code> | |||
main.qml | main.qml | ||
<code> | |||
import QtQuick 1.0 | |||
Item { | Item { | ||
width: 200; height: 300 | |||
signal viewClicked(string first, string second) | |||
MouseArea { | MouseArea { | ||
anchors.fill: parent | |||
onClicked: viewClicked("first", "second") | |||
} | |||
} | |||
</code> |
Revision as of 09:42, 25 February 2015
English | Deutsch
Connecting a complex signal from QML to Qt
The example code below shows how you can connect complex signals from QML to Qt.
main.cpp
#include <QtGui>
#include <QtDeclarative>
class DeclarativeView : public QDeclarativeView
{
Q_OBJECT
public:
DeclarativeView(const QUrl & source) : QDeclarativeView(source)
{}
public slots:
void testSlot(QString string1, QString string2)
{
qDebug() << string1 << string2;
}
};
#include "main.moc"
int main(int argc, char **argv)
{
QString file = "main.qml";
QApplication app(argc, argv);
DeclarativeView view(QUrl::fromLocalFile(file));
QDeclarativeItem '''item = qobject_cast<QDeclarativeItem'''>(view.rootObject());
QObject::connect(item, SIGNAL (viewClicked(QString , QString)), &view, SLOT (testSlot(QString, QString)));
view.resize(200,200);
view.show();
return app.exec();
}
main.qml
import QtQuick 1.0
Item {
width: 200; height: 300
signal viewClicked(string first, string second)
MouseArea {
anchors.fill: parent
onClicked: viewClicked("first", "second")
}
}