我正在构建一个图像查看器应用程序。我将所有图像路径存储到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());
}
答案 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()请求。