gpt4 book ai didi

c++ - QLabel 不使用 QToolButton 显示图像

转载 作者:行者123 更新时间:2023-11-28 01:26:23 26 4
gpt4 key购买 nike

我有一个用于可视化图像(包括 .tif、.tiff、.jpg 等)的用户界面的最小示例,包括:

1)N.1 QLabel(用于展示图片)

2) N.1 按钮(用于上传文件夹)

3) N.1 QLineEdit(用于可视化路径)

4) N.2 QToolbuttons(用作左右查看图像)

enter image description here

我正在尝试使用左右 QTool 按钮浏览图像,但有些地方不正确,我看不到任何图像。我在看this source作为示例,以便开发我自己的实现并将其用于我正在开发的其他项目。

主窗口.h

private slots:
void on_imageCroppedABtn_clicked();
void on_leftArrowCroppedA_clicked();
void on_rightArrowCroppedA_clicked();
private:
Ui::MainWindow *ui;
QString camADir;
QString fileCamA;
int croppedIndexA;
QStringList croppedFilenamesA;
QDir croppedA;

主窗口.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
croppedIndexA = 0;
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_imageCroppedABtn_clicked()
{
QString cdir = QFileDialog::getExistingDirectory(this, tr("Choose an image directory to load"),
fileCamA, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
if((cdir.isEmpty()) || (cdir.isNull()))
return;
croppedA.setPath(cdir);
croppedFilenamesA = croppedA.entryList(QStringList() << "*.tiff" << "*.TIFF" << "*.tif" << "*.TIF", QDir::Files);
croppedIndexA = 0;
ui->lineEditfolderA->setText(croppedA.path());
}

void MainWindow::on_leftArrowCroppedA_clicked()
{
croppedIndexA--;
if(croppedIndexA < 0)
croppedIndexA = croppedFilenamesA.size()-1;
if(croppedFilenamesA.size() > 0)
{
ui->labelCroppedA->setScaledContents(true);
ui->labelCroppedA->setPixmap(QPixmap::fromImage(QImage(croppedFilenamesA[croppedIndexA])));
ui->labelCroppedA->show();
}
}

void MainWindow::on_rightArrowCroppedA_clicked()
{
croppedIndexA++;
if(croppedIndexA >= croppedFilenamesA.size())
croppedIndexA = 0;
if(croppedFilenamesA.size() > 0)
{
ui->labelCroppedA->setScaledContents(true);
ui->labelCroppedA->setPixmap(QPixmap::fromImage(QImage(croppedFilenamesA[croppedIndexA])));
ui->labelCroppedA->show();
}
}

我一直在尝试以多种不同方式更改实现,但我始终无法看到图像。任何人都可以阐明这个问题吗?

最佳答案

QImage ctor 需要读取图像的完整路径。您可以将调用 getExistingDirectory 的结果存储在数据成员 cdir 中。当您调用 entryList 时,将列出传递目录中的所有文件。在创建 QImage 时,您需要将目录名与该目录中的文件名连接起来。所以你可以调用:

ui->labelCroppedA->setPixmap(
QPixmap::fromImage(QImage(cdir + "/" + croppedFilenamesA[croppedIndexA])));
^ add directory separator

关于c++ - QLabel 不使用 QToolButton 显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53600982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com