Jump to content

Connect a complex signal from QML to Qt

From Qt Wiki
Revision as of 12:48, 28 June 2015 by Wieland (talk | contribs) (Cleanup)

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

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