Lio*_*ing 4 c++ qt image thumbnails qt5
我有一个QTreeView显示硬盘驱动器和目录。我也有一个QListView显示图像文件如下:

但我想将图像显示为缩略图,如下所示:

我的代码:
mainWidget::mainWidget(QWidget *parent) : QWidget(parent), ui(new Ui::mainWidget){
ui->setupUi(this);
dirsModel = new QFileSystemModel;
filesModel = new QFileSystemModel;
dirsModel->setRootPath("");
ui->treeView->setModel(dirsModel);
ui->listView->setModel(filesModel);
dirsModel->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
filesModel->setFilter(QDir::Files);
ui->treeView->hideColumn(1);
ui->treeView->hideColumn(2);
ui->treeView->hideColumn(3);
ui->treeView->header()->hide();
}
void mainWidget::on_treeView_clicked(const QModelIndex &index){
ui->listView->setRootIndex(filesModel->setRootPath(dirsModel->filePath(index)));
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不知道将图像视图从图标更改为缩略图的方法是什么。
根据你的追求,我认为有更好的方法来解决它,但这里有一个基于我在 python 中的项目的示例:
您可以做的是将 QFileIconProvider 子类化:
ICON_SIZE = QSize(64,64)
accepted_types = (".jpg",".tiff",".png",".exr",".psd")
# this depends on the plugins you have installed,
# PSD and EXR requires external ones).
class IconProvider(QFileIconProvider):
def __init__(self) -> None:
super().__init__()
def icon(self, type: 'QFileIconProvider.IconType'):
fn = type.filePath()
if fn.endswith(accepted_types):
a = QPixmap(ICON_SIZE)
a.load(fn)
return QIcon(a)
else:
return super().icon(type)
Run Code Online (Sandbox Code Playgroud)
然后在您使用的模型上:
self.fileSystemModel.setIconProvider(IconProvider)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3035 次 |
| 最近记录: |