Как установить / изменить значок файла в объекте QFileInfo?
Если вы посмотрите на мой код, Qlist<QFileInfo>
перечислит значок всех моих папок в моем домашнем каталоге как gnome-fs-directory. Это означает, что QFileInfo перечисляет даже значок папки на рабочем столе в виде обычного gnome-fs-directory.
Но я хочу, чтобы на рабочем столе была иконка QFileIconProvider :: Desktop.
- Что, следовательно, приводит ко 2-му вопросу:
Является ли QFileInfo подходящим классом для определения значка, который будет использовать QFileSystemModel?
- Что приводит к третьему вопросу:
Почему мой QDir не передал QFileSystemModel список QFileInfo с соответствующей ролью значка для рабочего стола?
- Итак, главный вопрос в том, что мне нужно сделать, чтобы QFileSystemModel использовал соответствующую роль значков при перечислении себя в виде дерева или списка?
Код для определения значка файла каждой папки в домашней папке:
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);
}