Ich schreibe eine QML + Qt-Anwendung. I definiert eine Klasse wie folgt:So stellen Sie ein C++ - Modell für QML bereit
class MainClass : public QObject
{
Q_OBJECT
public:
rosterItemModel m_rosterItemModel;
.
.
.
}
rosterItemModel Modell ist eine Klasse von QAbstractListModel abgeleitet. ich ausgesetzt Mainclass Teil QML diese Funktion verwenden:
qmlRegisterType<MainClass>("CPPIntegrate", 1, 0, "MainClass");
Jetzt habe ich dieses Modell zugewiesen werden soll (m_rosterItemModel) von Mainclass-Eigenschaft eines Listview in QML zu modellieren. Ich habe versucht, die folgenden Möglichkeiten, aber keiner von ihnen waren hilfreich :(
- Ich versuchte m_rosterItemModel als PROPERTY Q_PROPERTY mit zu erklären. Ich konnte es nicht tun, weil sie sagte, dass QAbstractListModel nicht copy-fähig ist.
- ich habe versucht, einen Zeiger auf m_rosterItemModel in QML-Datei mit einer Q_INVOKABLE Funktion in Mainclass zu bekommen. Aber es war zu nicht hilfreich.
Könnte mir jemand helfen?
I Mainclass zu QML Verwendung qmlRegisterType registriert in Um MainClass-Signale und Slots einfach in QML zu verwenden, erstellen Sie eine Instanz wie MainClass {id: mc}. Sowieso . danke :) – saeed
Es scheint, aus Erfahrung, dass im zweiten Fall die Modellklasse in necassary auch registrieren: 'qmlRegisterType (" CPPIntegrate ", 1, 0," MainClass ");' Auch mit 'const' Modifier scheint die Interoperation zu unterbrechen. Das letzte schrullige Bit bezieht sich immer auf die Klasse mit ihrer vollständigen Namespace-Qualifizierung innerhalb der Header-Deklarationen Q_PROPERTY und Q_INVOKABLE. Wenn man außerdem versucht, einen Basisklassenzeiger (wie QAbstractItemModel) zurückzugeben, wird die Interoperabilität erneut fehlschlagen, also Vorsicht. –
mlvljr
Wie bekomme ich mainClassInstance? – Brent81