为QTreeView项目设置相对于其后缀的自定义图标,可以通过以下步骤实现:
下面是一个示例代码,演示如何为QTreeView项目设置相对于其后缀的自定义图标:
#include <QApplication>
#include <QTreeView>
#include <QFileSystemModel>
#include <QFileInfo>
#include <QIcon>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建QTreeView和QFileSystemModel
QTreeView treeView;
QFileSystemModel model;
model.setRootPath(QDir::currentPath());
treeView.setModel(&model);
// 获取文件后缀名并设置自定义图标
for (int i = 1; i < model.columnCount(); ++i) {
treeView.setColumnHidden(i, true);
}
for (int i = 0; i < model.rowCount(); ++i) {
QModelIndex index = model.index(i, 0);
QString filePath = model.filePath(index);
QFileInfo fileInfo(filePath);
QString suffix = fileInfo.suffix();
// 根据后缀名设置自定义图标
if (suffix == "txt") {
QIcon icon(":/icons/txt_icon.png");
model.setData(index, icon, Qt::DecorationRole);
} else if (suffix == "doc" || suffix == "docx") {
QIcon icon(":/icons/doc_icon.png");
model.setData(index, icon, Qt::DecorationRole);
} else {
// 设置默认图标
QIcon icon(":/icons/default_icon.png");
model.setData(index, icon, Qt::DecorationRole);
}
}
treeView.show();
return a.exec();
}
在上述示例代码中,我们使用QFileSystemModel作为QTreeView的数据模型,并通过遍历文件来获取后缀名并设置相应的自定义图标。可以根据需要添加更多的后缀名和对应的自定义图标。
注意:示例代码中的图标路径是相对路径,需要根据实际情况修改为正确的图标文件路径。
推荐的腾讯云相关产品:腾讯云对象存储(COS),用于存储和管理文件资源。可以将自定义图标文件上传到腾讯云对象存储,并在代码中使用相应的URL来加载图标。
腾讯云产品介绍链接地址:腾讯云对象存储(COS)
领取专属 10元无门槛券
手把手带您无忧上云