如何使用线程创建图像缩略图

Lio*_*ing 5 c++ qt multithreading qt5

QTreeView用于获取图像路径,然后用于QListView将特定路径中的图像显示为缩略图。

期间的问题,创建并显示缩略图。
前面的过程需要很长时间才能完成,取决于图像的数量。
出于这个原因,我决定使用线程,也许有助于防止应用程序中发生的挂断并提高创建和显示缩略图的速度。

void mainWidget::on_treeView_clicked(const QModelIndex &index){
    filesModel->clear();
    QFileSystemModel *sysModel = qobject_cast<QFileSystemModel*>(ui->treeView->model());
    QDir dir(sysModel->filePath(ui->treeView->currentIndex()));
    QFileInfoList filesList = dir.entryInfoList(QStringList() << "*.jpg" << "*.jpeg" << "*.tif" << "*.png" << "*.gif" << "*.bmp" ,QDir::Files);
    int filesCount = filesList.size();
    for(int i=0;i<filesCount;i++){
        QPixmap originalImage(filesList[i].filePath());
        if(!originalImage.isNull()){
            QPixmap scaledImage = originalImage.scaled(150, 120);    
            filesModel->setItem(i, new QStandardItem(QIcon(scaledImage), filesList[i].baseName()));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在以前的代码中使用线程?

use*_*913 1

在这种情况下,您不必使用线程来保持应用程序的响应能力。QCoreApplication::processEvents()在循环中使用可以保持应用程序的响应能力。QCoreApplication::processEvents()将处理调用它的线程的事件队列中的所有事件。