Bir QML + Qt uygulaması yazıyorum. bir sınıf aşağıdaki gibi tanımlanır:C++ Modeli'ni QML'ye nasıl getirilir
class MainClass : public QObject
{
Q_OBJECT
public:
rosterItemModel m_rosterItemModel;
.
.
.
}
rosterItemModel modeli QAbstractListModel türetilmiş bir sınıftır. Ben MainClass bu fonksiyonu kullanarak bölümünü QML maruz:
qmlRegisterType<MainClass>("CPPIntegrate", 1, 0, "MainClass");
Şimdi QML bir ListView özelliği modellemek için MainClass bu modeli (m_rosterItemModel) atamak istiyoruz. Aşağıdaki yolları denedim ama bunların hiçbiri yararlı :(
- Ben Q_PROPERTY kullanarak bir MÜLK'ün olarak m_rosterItemModel ilan etmeye çalıştık. ben yapamazdım o QAbstractListModel olduğunu söyledi çünkü o değil kopyalamaya karşı mümkün.
- Ben MainClass bir Q_INVOKABLE işlevini kullanarak QML dosyasında m_rosterItemModel için bir işaretçi almaya çalıştı. Ama yararlı çok değildi.
birisi bana yardımcı olabilir mi?
I qmlRegisterType kullanarak QML için MainClass kayıtlı MainClass {id: mc} gibi bir örneği oluşturarak, MainClass sinyallerini ve yuvalarını QML'de kolayca kullanabilmeniz için. Her neyse. teşekkürler u :) – saeed
Deneyimden, ikinci durumda da necassary'de model sınıfını kaydettiriyor gibi görünüyor: 'qmlRegisterType (" CPPIntegrate ", 1, 0," MainClass ");' Ayrıca, 'const' kullanarak değiştirici birlikte çalışmayı kırıyor gibi görünüyor. Son ilginç bit, daima başlığın Q_PROPERTY ve Q_INVOKABLE bildirimlerindeki tam ad alanı yeterliliği ile sınıfa başvurmaktır. Ayrıca, eğer bazı temel sınıf (QAbstractItemModel gibi) işaretçisini döndürmeyi düşünürse, birlikte çalışabilirlik tekrar başarısız olur, bu yüzden dikkat edin. –
mlvljr
mainClassInstance nasıl edinilir? – Brent81