首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt: QFileInfo对象中的更改图标

Qt: QFileInfo对象中的更改图标
EN

Stack Overflow用户
提问于 2011-11-07 02:59:49
回答 1查看 1.4K关注 0票数 1
  • 我的首要问题是:

如何在QFileInfo对象中设置/更改文件图标?如果您查看我的代码,Qlist<QFileInfo>将我的主目录中所有文件夹的图标列表为gnome目录。这意味着,QFileInfo甚至将我的桌面文件夹的图标列为普通的gnome-fs-目录。

但我希望桌面将QFileIconProvider::桌面作为图标。

  • ,由此引出第二个问题:

QFileInfo是否是用于查找QFileSystemModel将使用的图标的适当类?

  • ,引出第三个问题:

为什么我的QDir不为桌面传递一个带有适当图标角色的QFileSystemModel QFileInfo列表?

因此,最终的问题是,当在树视图或列表视图中列出自己时,我需要做什么来确保使用适当的图标角色?

查找主文件夹中每个文件夹的文件图标的代码:

代码语言:javascript
复制
void MainWindow::fileIconInfo(QFileSystemModel *model)
{
    QFileIconProvider *iconprov = model->iconProvider();

    QFileInfoList fileInfoList = QDir::home().entryInfoList();
    QFileInfoList::Iterator i;

    foreach (QFileInfo fi, fileInfoList){

        if (fi.fileName() == QString("Desktop"))
            /*change the icon to QFileIconProvider::Desktop*/;

        //the following line indicates all my icons are gnome-fs-directory!!*/
        std::cout << iconprov->icon(fi).name().toStdString() << std::endl;
    }
}

这是我的主要窗口:

代码语言:javascript
复制
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    fileSystemTree(ui->listView);
    fileSystemTree(ui->treeView);
}

设置视图的模型:

代码语言:javascript
复制
void MainWindow::fileSystemTree(QAbstractItemView *view) {
    QFileSystemModel *model = new QFileSystemModel;
    model->setRootPath(QDir::homePath());

    view->setModel(model);
    view->setRootIndex(model->index(QDir::homePath()));

    fileIconInfo(model);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-08 00:17:14

我认为您所描述的原因是QFileIconProvider检测到您使用的是Gnome,而Gtk是使用Gtk风格的--不管发生什么。您能否尝试启动其他桌面环境,看看是否仍然存在问题?如果是这样的话,我是对的,您唯一能做的就是子类QFileSystemModel和更改从数据方法返回的QIcon,但是这是非常粗糙和不灵活的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8032324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档