5
我有一個QTreeView與QSortFilterProxyModel之間的視圖和QStandardItemModel排序樹。然後我想通過clicked()信號來處理視圖中的點擊。不能在QTreeView的點擊信號中使用itemFromIndex與QSortFilterProxyModel
的模型/視圖是設置與此類似:
mymodel = new QStandardItemModel(5, 5, this);
mysort = new MySortProxy(this);
mysort->setSourceModel(mymodel);
myview = new QTableView(this);
myview->setSourceModel(mysort);
connect(myview, SIGNAL(clicked(QModelIndex)), this, slot(clickAction(QModelIndex)));
這種設置中的所有作品和我想要的方式排序我的數據。當你點擊一個物品時,clickAction()槽會被點擊物品的索引。然後嘗試從槽中的索引中獲取項目:
void myclass::clickAction(const QModelIndex &index)
{
QStandardItem *item = mymodel->itemFromIndex(index);
}
但是,itemFromIndex返回NULL。
如果我刪除了QSortFilterProxyModel並將該模型直接設置爲視圖中的sourcemodel,則它完全可以正常工作。即
myview->setSourceModel(mymodel); // was setSourceModel(mysort);
mymodel-> itemFromIndex(指數)現在返回預期的項目,但很明顯,現在我不能用我自己的排序代理。
任何人都可以告訴我我做錯了什麼,當我有一個sortfilter代理到位時,如何在點擊插槽中獲得該項目?
我正在使用Qt-4.3.1。
感謝您的幫助,賈爾斯
非常感謝您的回答。不幸的是,由於星期一是英格蘭的一個銀行假日,我不能在星期二之前嘗試。然而,你的答案響了很多鍾,我相信會證明是正確的,所以我現在將它標記爲已接受。我會在星期二嘗試它之後更新它。謝謝。 – giles123 2010-08-27 23:14:42
現在已經嘗試過,它工作得很好。謝謝。 – giles123 2010-09-01 09:06:17