我认为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