对于QTreeView中的文件类型使用系统默认图标,可以通过以下步骤实现:
下面是一个示例代码,演示如何对QTreeView中的文件类型使用系统默认图标:
#include <QApplication>
#include <QTreeView>
#include <QStandardItemModel>
#include <QStyledItemDelegate>
#include <QFileIconProvider>
class FileIconDelegate : public QStyledItemDelegate
{
public:
explicit FileIconDelegate(QObject* parent = nullptr)
: QStyledItemDelegate(parent)
{
}
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override
{
QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
if (index.column() == 0) {
QFileIconProvider iconProvider;
QIcon icon = iconProvider.icon(QFileIconProvider::File);
opt.icon = icon;
}
QStyledItemDelegate::paint(painter, opt, index);
}
};
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QTreeView treeView;
QStandardItemModel model;
treeView.setModel(&model);
// 添加文件数据到模型中
// ...
// 设置自定义的委托
FileIconDelegate delegate;
treeView.setItemDelegate(&delegate);
treeView.show();
return app.exec();
}
在上述示例中,我们创建了一个自定义的委托类FileIconDelegate,继承自QStyledItemDelegate。在paint()函数中,我们通过QFileIconProvider获取文件的系统默认图标,并将其绘制在单元格中。
通过设置自定义委托类,我们可以实现对QTreeView中文件类型的系统默认图标的显示。这样,当我们向QTreeView中添加文件数据时,系统默认图标将会自动显示在对应的单元格中。
对于腾讯云相关产品和产品介绍链接地址,可以参考腾讯云官方文档或者咨询腾讯云的客服人员获取更详细的信息。
领取专属 10元无门槛券
手把手带您无忧上云