2015-07-10 245 views
0

我有一個QTreeView連接到模型(QStandardItemModel),所以樹被填充,我可以顯示它。QTreeView項目可編輯和選擇整行

當我雙擊這些項目,打開項目編輯模式,在那裏我可以修改字段的內容。

我不想那麼做!

  1. 我想我的領域固定,不可編輯。
  2. 更進一步,應該選擇一個完整的行,單擊該樹時。

我感謝所有幫助,誠懇

回答

1

對於1

QStandardItem* item = new StandardItem(QString(itemNameString)); 
item->setEditable(false); 

但在這裏,你必須設置爲每個字段,建立你的QStandardItemModel時。我不知道,如果這對你有效?可能不是,當有太多條目時?

對於2.嘗試

ui->treeView->setSelectionBehavior (QAbstractItemView::SelectRows); 
+0

如果他有很多然後條目'不建議QStandardItemModel'。在這種情況下更有效的是編寫自己的數據模型。我的意思是,每個項目上的'setEditable'沒有顯着的開銷,如果它將會放棄'QStandardItemModel'會更好。 –

+0

我用大約填充我的TreeModel。 980個條目,構成一棵樹。我認爲那不是很多? 1&2解決了我的問題,但沒有像QTreeView :: setEditable(false)爲整個樹而不是爲每個項目設置一次。 –

+0

這是一個小數字。但請記住,如果您的應用程序允許,最終用戶可以使用更大的數據集。 –

0
+0

我不明白1:mainwindow.cpp:34:錯誤:沒有匹配函數調用'QTreeView :: setSelectionBehavior(Qt :: ItemFlag)' ui-> treeView-> setSelectionBehavior(Qt :: ItemIsSelectable); –

+0

我的答案與編輯後接受的答案完全相同。你的錯誤很奇怪,指的是例外答案的第一個版本。您需要提供更多數據來解決此編譯錯誤。 –