我目前的程序中需要一个QTreeWdiget来显示数据。
数据在代码里是一个结构体,里面有几百个变量(有基本类型,也有子结构体),结构体的每个变量的值已经通过memset赋值过。
现在我需要在QTreeWdiget显示出每个变量的名和值。
比如有一个结构是:
struct Child{
long c;
int d;
};
struct Node{
char a;
short b;
Child child;
}
那么我希望在QTreeWdiget以树的形式展现出来,有什么简便的方法可以做到?
最簡單地,是使用 QtPropertyBrowser,可以參考官方的例子,我打包了一個 CMake 的版本:http://whudoc.qiniudn.com/2016/QtPropertyBrowser.7z
如果不想用這個函式庫,要自己來實現,要:
實作一個自己的 model,裡面需要有
data
和setData
兩個函數,資料要放到一個特定的 role 裡,不要凌亂了;給 TableView 設定 model(資料綁定在 model 裡);
為 TableView 設定 delegate(這是編輯資料的控制項);
簡單的說下 delegate。一個 delegate 通常需要繼承 QItemDelegate。一個 delegate 會拿到一個 widget(就是你的 treeView 的子 widget)的指針,然後創造一個 editor 以實現編輯功能,Editor 先從 widget 加載數據,然後編輯後再 setModelDate 把數據存回去。