我有一个继承自 QTreeView 的类。我需要将图标分配给不同类型的文件和目录。这个问题给出了这个解决方案:
QVariant MyQFileSystemModel::data( const QModelIndex& index, int role ) const {
if( role == Qt::DecorationRole )
{
QFileInfo info = MyQFileSystemModel::fileInfo(index);
if(info.isFile())
{
if(info.suffix() == "dat")
return QPixmap(":/icons/File_Icon.png");//I pick the icon depending on the extension
else if(info.suffix() == "mcr")
return QPixmap(":/icons/Region_Icon.png");
}
}
return QFileSystemModel::data(index, role);
}
Run Code Online (Sandbox Code Playgroud)
我的类不是从 QFileSystemModel 继承,而是将其组合在一起,这意味着我无法覆盖该函数data()。从上面来看,图标将如何显示?是通过在构造函数中调用 data() 来实现的吗?
您需要使用根节点将模型添加到树中:
QStandardItemModel* model = new QStandardItemModel;
QStandardItem * rootNode = model->invisibleRootItem();
this->setModel(model); //Your class inherts from QTreeView
Run Code Online (Sandbox Code Playgroud)
然后添加带有图标的项目:
QStandardItem* item = new QStandardItem("myItem")
item->setIcon(QIcon("icon.jpg"));
rootNode->appendRow(item);
Run Code Online (Sandbox Code Playgroud)
你可能有这样的东西:http://hpics.li/e9dc5dd
| 归档时间: |
|
| 查看次数: |
11556 次 |
| 最近记录: |