Qt5 的 View Model 學習

筆記一下 Qt5 的 View Model 幾個關鍵

Standard widgets 把 data 存在 widget 裡.
例如:QListWidget, QTableWidget, QTreeWidget.

View classes 是使用外部的 data (the model)
例如:QListView, QTableView, QTreeView.

單一數據存取

1
2
3
4
5
// 存
Item->setData(itemValue, Qt::UserRole); // 單一存取

// 取
ItemValue itemValue = (ItemValue)(index.data(Qt::UserRole).toInt());

自定義結構數據存取

定義數據類型

1
2
3
4
5
6
struct ItemData {
QString name;
QString id;
};

Q_DECLARE_METATYPE(ItemData)

1
2
3
4
5
6
// 存
Item->setData(QVariant::fromValue(itemData), Qt::UserRole+1); // 整體存取

// 取得
QVariant variant = index.data(Qt::UserRole+1);
ItemData itemData = variant.value<ItemData>();

參考
Qt5 Model/View Tutorial
Qt5 Model/View Programming
Qt 學習之路 2(41):model/view 架構| 上篇的部份中文翻譯
QT中的View Model模型| 上上篇的完整中文翻譯
Qt Model/View编程介绍| 上上上篇的完整中文翻譯 排版比較好
QT开发(三十六)——Model/View框架
Qt-Model/View原理与编程方法
Qt之QListView使用

其它相關文章推薦
[Qt] 讀檔,讀取 txt 文字檔
[Qt] 寫檔,寫入 txt 文字檔
安裝 Qt 在 Windows 7 (使用MSVC)
Qt產生的exe發布方式
Qt 新增多國語言.ts翻譯檔案
Qt5的中文亂碼問題如何解決