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

Alles rund um die Programmierung mit Qt Quick und QML
Antworten
Bronski
Beiträge: 43
Registriert: 10. Oktober 2008 13:46

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

Beitrag von Bronski » 13. März 2018 23:04

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 ?

hilefoks
Beiträge: 141
Registriert: 13. März 2008 17:09

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

Beitrag von hilefoks » 19. März 2018 11:31

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

Bronski
Beiträge: 43
Registriert: 10. Oktober 2008 13:46

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

Beitrag von Bronski » 19. März 2018 12:25

Vielen Dank,
das hilft mir erst mal weiter :)

Antworten