我的应用程序中有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 :(得分:3)
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
。