Почему значки файлов не отображаются в QListView?

у меня есть QListView в моем приложении и хочу отобразить список файлов с их значками, как показано в документации QT.
QListView находится в Icon mode
У меня есть следующий код: —

std::vector<std::string>::iterator it = result.begin() ; // got the results, now tie them to the StandardItemModel.
RespPara::stringList = new QStringList ;
RespPara::model = new QStringListModel ;
while(it!=result.end())
{
std::cout<<*it<<std::endl ;
RespPara::stringList->append((*it).c_str()) ;
it++ ;
}
RespPara::model->setStringList(*(RespPara::stringList)) ;
RespPara::mainWindow->listView->setModel(RespPara::model) ;

Теперь, хотя список файлов виден в основном приложении, значки не видны.
Что я здесь не так делаю? Как я могу исправить эту проблему?

РЕДАКТИРОВАТЬ: — Вот новый код, который дает один и тот же значок для всех типов файлов: —

    while(!in.eof())
{
getline(in, buff) ;
QFileInfo fileInfo(buff.c_str()) ;
QFileIconProvider iconProvider  ;
QIcon icon = iconProvider.icon(fileInfo) ;
QStandardItem* standardItem = new QStandardItem(icon, buff.c_str()) ;
myModel->appendRow(standardItem)  ;
}
win.listView->setModel(myModel) ;

Вот снимок экрана:

введите описание изображения здесь

введите описание изображения здесь

0

Решение

QListView не настолько силен, чтобы распознать значок файла, это просто просмотр списка. Если вы хотите отображать значки в QListViewТрадиционный способ заключается в создании QIcon и установите его для вашей модели, например:

QIcon icon(":/myIcons/theIcon.png");
model->setItem(0,0, new QStandardItem(icon, "Text next to the icon"));

В вашем коде нет никаких значков, поэтому вы их не видите.

В вашем случае QIcon должны быть предоставлены значок файла и вы должны обратиться за помощью к QFileIconProvider учебный класс. Следующий код получает значок файла из вашей системы:

QFileInfo fileinfo("C:/cat/is/lovely/Test.txt"); // Provides the information of file type
QFileIconProvider iconprovider;
QIcon icon = iconprovider.icon(fileinfo); // return QIcon according to the file type

После этого вы устанавливаете QIcon на вашей модели.

введите описание изображения здесь

3

Другие решения


По вопросам рекламы [email protected]