但是就是没有相应的图标,比如 mp4格式的avi格式的图标在上面都不显示
各位高手,这个该怎么添加图标呢?
我之前看文档,说的是通过文件后缀名来搞定
比如 QIcon icon(".mp4");
item->setIcon(0, icon);
但这样没反应,所以这个该怎么做,提醒下,谢谢
10 个解决方案
#1
QIcon::QIcon ( const QPixmap & pixmap )
Constructs an icon from a pixmap.
".mp4"必须是一个图像的路径,可以在资源文件中加载(":/1.jpg"),也可以写成绝对路径("E:\\1.jpg").
Constructs an icon from a pixmap.
".mp4"必须是一个图像的路径,可以在资源文件中加载(":/1.jpg"),也可以写成绝对路径("E:\\1.jpg").
#2
那我应该怎样获取系统的默认图标呢?
因为文件很多,比如mp4 mp3 avi等格式
#3
记得QFileSystemModel就可以获得默认的图标
#4
学习了 在c++区也一直看到你
#5
谢谢3楼的提醒。
找到一种方法:
QFileSystemModel *fileModel = new QFileSystemModel(this);
QModelIndex a=fileModel->index("F://Media//apple.mp4");//这里要找一个你所要格式图片的文件了。
QIcon icon;
if(a.isValid())
icon = fileModel->fileIcon(a);
这样就OK了,不过觉得还是不太灵活。
#6
资源文件里加
#7
model = new QDirModel;
tree = new QTreeView;
ui.treeView->setModel(model);
QString ls = "./replay";
QDir lsDir(ls);
ui.treeView->setRootIndex(model->index(lsDir.canonicalPath()));
// Demonstrating look and feel features
ui.treeView->setAnimated(false);
ui.treeView->setIndentation(20);
ui.treeView->setSortingEnabled(true);
#8
我按照你的办法,所有的文件都显示的是文件夹的图标,而不管是不是文件夹
代码如下:
QFileSystemModel *fileModel = new QFileSystemModel(serverPathTreeWidget);
QModelIndex a=fileModel->index(infoName);
QIcon icon;
icon = fileModel->fileIcon(a);
QTreeWidgetItem *dir = new QTreeWidgetItem(fileColumn);
dir->setIcon(0, icon);
其中infoName为全路径名,比如/1.avi
我这是从服务器上得到文件的名字,然后设置其图标
#9
这样哦,在服务器上取到的文件可能无法正确显示吧。
给你两种办法哦:
1、在本地放一些相应的文件(.avi,.mp3等,无任何意义,只获取图标),然后把图标加载到Icon中,再用。
2、做一些相应的图片做为资源文件加载。
关于服务器上文件不能正确显示图标这个还有待进一步研究。。。。
#10
看了你的帖子,当时你已经成功将本地文件显示到了QTreeWidget上了,可是我现在看了QT自带的demo后,还是不能成功显示,能指点一下吗?
#1
QIcon::QIcon ( const QPixmap & pixmap )
Constructs an icon from a pixmap.
".mp4"必须是一个图像的路径,可以在资源文件中加载(":/1.jpg"),也可以写成绝对路径("E:\\1.jpg").
Constructs an icon from a pixmap.
".mp4"必须是一个图像的路径,可以在资源文件中加载(":/1.jpg"),也可以写成绝对路径("E:\\1.jpg").
#2
那我应该怎样获取系统的默认图标呢?
因为文件很多,比如mp4 mp3 avi等格式
#3
记得QFileSystemModel就可以获得默认的图标
#4
学习了 在c++区也一直看到你
#5
谢谢3楼的提醒。
找到一种方法:
QFileSystemModel *fileModel = new QFileSystemModel(this);
QModelIndex a=fileModel->index("F://Media//apple.mp4");//这里要找一个你所要格式图片的文件了。
QIcon icon;
if(a.isValid())
icon = fileModel->fileIcon(a);
这样就OK了,不过觉得还是不太灵活。
#6
资源文件里加
#7
model = new QDirModel;
tree = new QTreeView;
ui.treeView->setModel(model);
QString ls = "./replay";
QDir lsDir(ls);
ui.treeView->setRootIndex(model->index(lsDir.canonicalPath()));
// Demonstrating look and feel features
ui.treeView->setAnimated(false);
ui.treeView->setIndentation(20);
ui.treeView->setSortingEnabled(true);
#8
我按照你的办法,所有的文件都显示的是文件夹的图标,而不管是不是文件夹
代码如下:
QFileSystemModel *fileModel = new QFileSystemModel(serverPathTreeWidget);
QModelIndex a=fileModel->index(infoName);
QIcon icon;
icon = fileModel->fileIcon(a);
QTreeWidgetItem *dir = new QTreeWidgetItem(fileColumn);
dir->setIcon(0, icon);
其中infoName为全路径名,比如/1.avi
我这是从服务器上得到文件的名字,然后设置其图标
#9
这样哦,在服务器上取到的文件可能无法正确显示吧。
给你两种办法哦:
1、在本地放一些相应的文件(.avi,.mp3等,无任何意义,只获取图标),然后把图标加载到Icon中,再用。
2、做一些相应的图片做为资源文件加载。
关于服务器上文件不能正确显示图标这个还有待进一步研究。。。。
#10
看了你的帖子,当时你已经成功将本地文件显示到了QTreeWidget上了,可是我现在看了QT自带的demo后,还是不能成功显示,能指点一下吗?