Seite 1 von 1

Wie kann ich ein Signal von einem QMl-Items nach außerhalb eines QQuickwidgets senden ??

Verfasst: 13. März 2018 22:04
von Bronski
Hallo,
ich bin dabei mich in Qt Quick einzuarbeiten. Ich habe in diesem Bereich noch keine Ahnung.
Folgende Frage:
Wenn ich in einem QQuickWidget,mittels setSource(), QML-Objekte dargestellt habe,wie kann ich ein Signal (z.B onClicked: item.qmlSignal("Hello from QML")) an ein QObject-Objekt außerhalb des QQuickWidgets senden ?
Ist dies überhaupt möglich ?

Re: Wie kann ich ein Signal von einem QMl-Items nach außerhalb eines QQuickwidgets senden ??

Verfasst: 19. März 2018 10:31
von hilefoks
Da gibt es mehrere Möglichkeiten.
Eine davon:

Code: Alles auswählen

class Controller : public QObject
{
    Q_OBJECT
public:
    //....
public slots:
    void buttonClicked(const QString &str) {
        qDebug() << str;
    }    
};

Code: Alles auswählen

int main(int argc char **argv) 
{
    //...
    Controller *ctrl = new Controller;
    QQmlContext *context = engine.rootContext();    
    context->setContextProperty("_ctrl", ctrl);
}
Jetzt kannst du aus QML heraus auf Properties, Slots, Signals und Q_INVOKABLE der Controller-Klasse zugreifen.

Code: Alles auswählen

onClicked: _ctrl.buttonClicked("Hello World");
MfG
Hilefoks

Re: Wie kann ich ein Signal von einem QMl-Items nach außerhalb eines QQuickwidgets senden ??

Verfasst: 19. März 2018 11:25
von Bronski
Vielen Dank,
das hilft mir erst mal weiter :)