#include <QApplication>
#include <QStandardItemModel>
#include <QTreeView>
#include <QModelIndex>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QStandardItemModel model;//创建标准项模型,存储自定义数据
//获取模型的根项(Root Item),根项是不可见的
QStandardItem *parent_item = model.invisibleRootItem();
//创建标准项item,并设置文本、图标和工具提示
QStandardItem *item_0 = new QStandardItem;
item_0->setText("A");
QPixmap pixmap_0(50,50);
pixmap_0.fill("red");
item_0->setIcon(QIcon(pixmap_0));
item_0->setToolTip("indexA");
parent_item->appendRow(item_0);//将创建的标准项作根项的子项
parent_item = item_0;//将创建的标准项作为新的父项
QStandardItem *item_1 = new QStandardItem;
item_1->setText("B");
QPixmap pixmap_1(50,50);
pixmap_1.fill("blue");
item_1->setIcon(QIcon(pixmap_1));
item_1->setToolTip("indexB");
parent_item->appendRow(item_1);
//创建新的标准项,使用另一种方法来设置文本、图标和工具提示
QStandardItem *item_2 = new QStandardItem;
QPixmap pixmap_2(50,50);
pixmap_2.fill("green");
item_2->setData("C", Qt::EditRole);
item_2->setData("indexC",Qt::ToolTipRole);
item_2->setData(QIcon(pixmap_2),Qt::DecorationRole);
parent_item->appendRow(item_2);
QTreeView view;
view.setModel(&model);
view.show();
//获取item_0的索引并输出item_0的子项数目、输出item_1的显示文本和工具提示
QModelIndex indexA = model.index(0,0,QModelIndex());//行号、列号、父模型索引
qDebug() << "indexA row count:" << model.rowCount(indexA);
QModelIndex indexB = model.index(0,0,indexA);
qDebug() << "indexB text:" << model.data(indexB,Qt::EditRole).toString();
qDebug() << "indexB toolTip:" << model.data(indexB, Qt::ToolTipRole).toString();
return a.exec();
}