Connect a complex signal from QML to Qt/de

From Qt Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

Komplexes Signal von QML nach C++ senden (QtQuick 1)

Der Code-Schnipsel demonstriert, wie man unter QtQuick 1 ein komplexes Signal von QML aus zu einem in C++ implementierten Slot sendet.

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")
 }
}