2015-07-10 23 views
-1

在建設QTreeWidgetItem你可以通過字符串列表,所以當你在一個表(QTreeWidget)插入它,你就會得到一個列中列出的字符串。但是,從表的方法中,您還可以調用setItemWidget並將文本小部件或任何類型的小部件設置在該行中,但似乎與具有字符串列表不兼容,因爲該小部件將繪製在字符串上。還有一個QTreeWidgetItem的setData方法,它設置一些可以被檢索但是對用戶不可見的數據。是否有正確使用所有三種數據存儲方法的方法?他們是否兼容?還是我必須堅持只有一個?Qt的QTreeWidgetItem文本內容VS部件條目VS數據

回答

0

QTreeWidgetItem的構造函數很方便立即列出所需的內容。

在單元格中插入自定義小部件時,需要將其autoFillBackground屬性更改爲true,以便它不透明。見QTreewidget::setItemWidget描述:

給出的widget的autoFillBackground屬性必須設置爲true,否則 widget的背景將是透明的,呈現出既 模型數據和樹部件項目。

可以在已經擁有物品並且您想要更改其內容之一時使用。

當然,您可以結合使用這些方法中的任何一種,但很難說,哪種方法最好不知道您的用例。還有一點提示:如果你只需要一個不會改變的簡單愚蠢的數據表示,使用QTreeWidget就沒有問題。但是,如果您的顯示數據可能發生變化,對象被刪除,添加,在代碼中的不同位置發生了變化,自定義數據模型QTreeView則可能是一個更好的選擇。