我正在尝试构建一个应用程序,我将选择一个目录(使用基于qtreeview模型的小部件),并且在选择文件夹时,其包含的图像文件将显示在基于qlistview模型的小部件中(以及稍后执行任务)选择某个图像后)。我已成功将图像文件显示为qlistview(基于模型)中的图标,但我需要在各自的缩略图中显示图像,而不是listView上的图标。
任何人都可以帮助我吗?我已经签出了 - http://doc.qt.io/qt-5/qlistview.html:这里只能实现图标(ViewMode为IconMode),而不是缩略图。
构造函数内部 -
QString sPath = "F:/";
dirModel = new QFileSystemModel (this); // setting up
the directory model on tree view
dirModel -> setRootPath(sPath);
ui->treeView->setModel(dirModel);
fileModel = new QFileSystemModel (this); // setting up
the file model on list view
fileModel ->setFilter(QDir::NoDotAndDotDot | QDir::Files);
fileModel -> setRootPath(sPath);
QStringList filters; // list view filters to show only image
files
filters << "*.JPG" << "*.PNG" << "*.ico";
fileModel->setNameFilters(filters);
fileModel -> setNameFilterDisables(false);
ui->listView->setModel(fileModel);
关于事件功能 -
void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
QString sPath = dirModel->fileInfo(index).absoluteFilePath();
ui->listView->setRootIndex(fileModel->setRootPath(sPath));
folderPath = sPath;
}
void MainWindow::on_listView_clicked(const QModelIndex &index)
{
if(!folderPath.isEmpty())
{
QString filename = fileModel->fileInfo(index).absoluteFilePath();;
QPixmap pix(filename);
int w = ui->imgLabel->width ();
int h = ui->imgLabel->height ();
ui->imgLabel->setPixmap (pix.scaled (w,h,Qt::KeepAspectRatio));
}
}
屏幕截图 - no_thumbnail。