我認爲QStandardItemModel
符合您的需求,並且比使用QAbstractItemModel
從您自己的模型中派生出來容易得多。
QStandardItem* itemTournament1 = new QStandardItem("Tournament 1");
QStandardItem* itemTeam1 = new QStandardItem("Team 1");
QStandardItem* itemTeam2 = new QStandardItem("Team 2");
QStandardItem* itemPlayer1 = new QStandardItem("Player 1");
QStandardItemModel* model = new QStandardItemModel;
model->setColumnCount(0);
model->appendRow(itemTournament1);
itemTournament1->appendRow(itemTeam1);
itemTournament1->appendRow(itemTeam2);
itemTeam1->appendRow(itemPlayer1);
// etc.
QTreeView* view = new QTreeView;
view->setModel(model);
編輯1:添加自定義數據
enum CustomRoles
{
LocationRole = Qt::UserRole,
AnotherDataRole = Qt::UserRole + 1
};
itemTournament1->setData("France", LocationRole);
itemTournament1->setData(12345, AnotherDataRole);
它的工作對我有什麼的那一刻,謝謝! 但我想要做的是添加更多的數據到我的課程。例如,錦標賽可能會得到一個QString的位置,團隊可能會得到一個int,其數量的球員等。 我不知道如何使用QStandardItemModel來適應這個。 –
使用* QStandardItem :: setData()*方法。看例子。 – Tomas