如何在QFileInfo对象中设置/更改文件图标?如果您查看我的代码,Qlist<QFileInfo>将我的主目录中所有文件夹的图标列表为gnome目录。这意味着,QFileInfo甚至将我的桌面文件夹的图标列为普通的gnome-fs-目录。
但我希望桌面将QFileIconProvider::桌面作为图标。
QFileInfo是否是用于查找QFileSystemModel将使用的图标的适当类?
为什么我的QDir不为桌面传递一个带有适当图标角色的QFileSystemModel QFileInfo列表?
因此,最终的问题是,当在树视图或列表视图中列出自己时,我需要做什么来确保使用适当的图标角色?
查找主文件夹中每个文件夹的文件图标的代码:
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;
}
}这是我的主要窗口:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
fileSystemTree(ui->listView);
fileSystemTree(ui->treeView);
}设置视图的模型:
void MainWindow::fileSystemTree(QAbstractItemView *view) {
QFileSystemModel *model = new QFileSystemModel;
model->setRootPath(QDir::homePath());
view->setModel(model);
view->setRootIndex(model->index(QDir::homePath()));
fileIconInfo(model);
}发布于 2011-11-08 00:17:14
我认为您所描述的原因是QFileIconProvider检测到您使用的是Gnome,而Gtk是使用Gtk风格的--不管发生什么。您能否尝试启动其他桌面环境,看看是否仍然存在问题?如果是这样的话,我是对的,您唯一能做的就是子类QFileSystemModel和更改从数据方法返回的QIcon,但是这是非常粗糙和不灵活的解决方案。
https://stackoverflow.com/questions/8032324
复制相似问题