如何从qstringlist获取单个字符串

时间:2016-09-30 09:44:11

标签: c++ qt

我正在构建一个图像查看器应用程序。我将所有图像路径存储到qSringlist中。现在我需要每次都获得一个图像路径。我怎么能这样做?

这是我的代码

void MainWindow::on_btn_Next_clicked()
{

//initial value
int count = 0;

do {
    //show image into label
    QImage img(fileName.at(count));
    ui->lbl_Image->setPixmap(QPixmap::fromImage(img));
    qDebug() << fileName.at(count);
    count++;
    return;
    } while (count < fileName.size());

}

3 个答案:

答案 0 :(得分:1)

count方法之外初始化on_btn_Next_clicked(),然后每次调用该方法时递增计数器,当计数器的大小与QStringList相同时,将其重置为0

// initialize count outside the method
int count = 0;


void MainWindow::on_btn_Next_clicked()
{
    if(count <= filename.size()) {

        //show image into label
        QImage img(fileName.at(count));
        ui->lbl_Image->setPixmap(QPixmap::fromImage(img));
        qDebug() << fileName.at(count);
        this->count++;
        return;
        } else {
            //reset the counter back to 0
            this->count = 0;
    }

}

答案 1 :(得分:0)

首先获取文件名:

 const QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open File"), QDir::currentPath());

使用foreach循环迭代:

  foreach(const QString& image, fileNames){
    ui->lbl_Image->setPixmap(QPixmap::fromImage(QImage(image)));
    qDebug() << "Get this filename: " << image;
  }

答案 2 :(得分:0)

以前的所有答案都是正确的,如何从列表中获取特定项目,即使问题的代码也能正确完成。

然而,所有人都没有提到这将始终显示列表中的最后一个图像,因为UI永远不会有机会显示任何其他图像。

循环永远不会返回到事件循环,因此永远不允许应用程序处理标签的update()请求。