Hallo zusammen,
ich versuch mich gerade an meinem ersten QML Projekt und habe jetzt folgendes Problem: Ich habe eine MainWindow mit verschiedenen Knöpfen, die beim anklicken ein neues QML Fenster öffnen und eine neue Instanz einer C++ Klasse anlegen soll. In dem neu geöffneten Fenster will ich dann Daten zwischen der angelegten Instanz und dem Fenster austauschen. In einer QtWidget Anwendung mach ich dies in einem SLOT der entsprechenden QtWidget Klasse. Wie mache dies aber in einer QML Anwendung?
Danke für Eure Hilfe.
gruss
martin
C++ Klassenvariable in QML
Re: C++ Klassenvariable in QML
Wenn du eine neue Instanz der C++ Klasse anlegst, wie du schreibst, dann hast du diese Klasse bereits in QML registriert. In QML hast du dann also im Prinzip ähnlichen Code wie diesen:
Auf eine solche Instanz der C++ Klasse (instanziert in QML) kannst du über dessen id zugreifen, hier also myClass. Zugreifen kannst du dabei auf alle Properties (Q_PROPERTY), alle mit Q_INVOKABLE makierten Methoden und auf alle öffentlichen Slots. Wäre MyClass folgendermaßen definiert:
Hier könntest aus QML also auf die Property name sowohl lesend als auch schreibend zugreifen:
MfG
Hilefoks
Code: Alles auswählen
import MyComponent 1.0
Item {
MyClass {
id: myClass
}
//...
}
Code: Alles auswählen
class MyClass : public QObject {
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName NOTIFIY nameChanged)
public:
//...
}
Code: Alles auswählen
import MyComponent 1.0
Item {
MyClass {
id: myClass
}
Text {
text: myClass.name
}
Component.onCompleted: myClass.name = "Hello World!";
}
Hilefoks