2015-10-16 108 views
0

我試圖建立了樹視圖模型(我的模型類從化QAbstractItemModel繼承)TreeView的QML錯誤 - 的QVariant ::的QVariant(無效*)」是私人在此背景下

CardsTreeModel * myModel=new CardsTreeModel(file.readAll()); 


QObject * pTree = m_pQmlObject->findChild<QObject*>("cardsTreeView"); 
pTree->setProperty("model", myModel); 

而且得到這樣的錯誤:

qvariant.h:465: error: 'QVariant::QVariant(void*)' is private 
    inline QVariant(void *) Q_DECL_EQ_DELETE; 
cardchoice.cpp:27: error: within this context 
    pTree->setProperty("model", myModel); 
            ^

請幫我解決這個問題!

+0

'setProperty'將'QVariant'作爲其第二個參數。你正在傳遞'CardsTreeModel *',它不能被隱式轉換爲'QVariant'。你可以寫'QVariant :: fromValue(myModel)'。目前還不清楚你試圖達到什麼目標。你似乎認爲「模型」是一些特殊的屬性名稱,並賦予它實現一些神奇的效果。 –

+0

我在這樣的例子中以這種方式成功地設置了模型:QObject * pList = m_pQmlObject-> findChild (「devicesList」); \t m_strListView.append(「device」); \t pList-> setProperty(「model」,m_strListView); – Mira

+0

'QVariant'具有'QStringList'構造函數,這就是我想象的'm_strListView'。無論如何,你可能想要的東西就像'qobject_cast (pTree) - > setModel(myModel);' –

回答

1

是你的myModel QObject?在C++中使用類時遇到同樣的問題,請記住添加Q_OBJECT和qmake。