首页 > 解决方案 > 我应该如何在不同的线程中加载图像?

问题描述

如何在 Qt 的另一个线程中运行以下函数?

void Dialog::on_loadPicture()
{

    ui->listWidget->setViewMode(QListWidget::IconMode);
    ui->listWidget->setIconSize(QSize(80,100 ));
    ui->listWidget->setResizeMode(QListWidget::Adjust);
    ui->progressBar->setMaximum(vec.size());
    ui->progressBar->setMinimum(progress.min());
    QDirIterator it(path , QDirIterator::Subdirectories);
    connect(&progress , SIGNAL(signalProgress(int)) , ui->progressBar , SLOT(setValue(int)));
    progress.emit50();


    while(it.hasNext())
    {
        item=new QListWidgetItem(QIcon(it.next()) , QString("1 (" +  (QString::number(9)) + ").jpg"  ));
        QVariant pathData(it.filePath());
        item->setData(Qt::UserRole , pathData);
        ui->listWidget->addItem(item);
        this->repaint();
        ui->listWidget->repaint();
        n++;
        emit progress.signalProgress(n);
    }
}

我像这样使用信号和插槽:

  connect(&secthread , &thread2::loadPicture , this ,&Dialog::on_loadPicture );
 QFuture<void> future2=QtConcurrent::run(&this->secthread , &thread2::start);

但我猜(这个)词让我的主线程冻结。

标签: c++multithreadingqtqlistwidgetloadimage

解决方案


推荐阅读