2011-07-11 24 views
2

閱讀了一些例子後,我仍然在這裏失去了一些東西。我有Qtreeview的視圖和QStandardItemModel的數據接口,也使用QSortFilterProxyModel子類,但我不知道它是否相關。 這是我的邏輯: 首先,我創建QWidget的作爲父模型:不能讓孩子在Qtreeview中使用QStandardItemModel

QStandardItemModel m_model = new QStandardItemModel(0,4,parent); 
then setSourceModel(m_model) for the widget 

設置樹視圖與QSortFilterProxyModel。是這樣的:

GroupProxyModel = new GroupSortFilterProxyModel; 
GroupProxyModel->setDynamicSortFilter(true); 
setSourceModel(createSubjectModel(parent)); 

ui.treeView_mainwindow->setModel(GroupProxyModel); 
ui.treeView_mainwindow->setSortingEnabled(true); 

再後來我填的第一行是這樣的:

QList<QStandardItem *> items; 
items.insert(0,new QStandardItem("Test 0")); 
items.at(0)->setEditable(false); 
m_model->insertRow(0,items); 

直到現在每一件事工作正常,我看行與數據。但是,當我想 增加孩子這樣行:

QModelIndex parentQModelIndex = m_model->item(0,0)->index(); 
m_model->insertRows(0,1,parentQModelIndex); 
m_model->insertColumns(0,1,parentQModelIndex); 
QModelIndex indexB = m_model->index(0, 0, parentQModelIndex); 
m_model->setData(indexB,"Child test",Qt::DisplayRole); 

但我沒有看到孩子,爲什麼呢?

回答

5

那不是如何QStandardItemModel工程 - 增加一個孩子,叫appendRow(S)/的insertRow(S)父QStandardItem:

QStandardItem* child = new QStandardItem(tr("Child test")); 
... 
QStandardItem* parentItem = m_model->item(0, 0); 
parentItem->appendRow(child); 
相關問題