Qt QScrollara图像立即消失
我编写了下面的代码,以便在滚动区域的特殊目录中显示图像。但当我触发actionOpen时,图像将立即消失。如何使图像稳定 main window.cppQt QScrollara图像立即消失,qt,qimage,qscrollarea,Qt,Qimage,Qscrollarea,我编写了下面的代码,以便在滚动区域的特殊目录中显示图像。但当我触发actionOpen时,图像将立即消失。如何使图像稳定 main window.cpp MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); layout = ui->verticalLayout; } MainWindow::~MainWindow
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
layout = ui->verticalLayout;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionOpen_triggered()
{
QString directory = QFileDialog::getExistingDirectory(this,
tr("OpenDirectory"),
QDir::homePath(),
QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
int nrows = 1;
int ncols = 1;
HorizontalScrollArea scroll(nrows, ncols);
layout->addWidget(&scroll);
QDir dir(directory);
dir.setNameFilters({"*.png", "*.jpg"});
for(const QFileInfo & finfo: dir.entryInfoList()){
QMessageBox::information(this,"log",finfo.absolutePath());
int column = scroll.columnCount();
for(int row=0; row < nrows; row++){
QPixmap pic(finfo.absoluteFilePath());
QLabel *label = new QLabel(QString("label: %1 %2")
.arg(row)
.arg(column));
label->setFrameShape(QFrame::Box);
label->setAlignment(Qt::AlignCenter);
label->setPixmap(pic.scaled(500,600,Qt::KeepAspectRatio));
scroll.addWidget(label, row, column);
}
}
}
为了查看图像,我放置了一个信息按钮,每当出现图片时都会执行该按钮。在方法中创建的变量在方法执行完毕后被消除,在您的示例中,解决方案是使用指针
QString directory = QFileDialog::getExistingDirectory(this,
tr("OpenDirectory"),
QDir::homePath(),
QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
int nrows = 1;
int ncols = 1;
HorizontalScrollArea *scroll = new HorizontalScrollArea(nrows, ncols);
layout->addWidget(scroll);
QDir dir(directory);
dir.setNameFilters({"*.png", "*.jpg"});
for(const QFileInfo & finfo: dir.entryInfoList()){
QMessageBox::information(this,"log",finfo.absolutePath());
int column = scroll->columnCount();
for(int row=0; row < nrows; row++){
QPixmap pic(finfo.absoluteFilePath());
QLabel *label = new QLabel(QString("label: %1 %2")
.arg(row)
.arg(column));
label->setFrameShape(QFrame::Box);
label->setAlignment(Qt::AlignCenter);
label->setPixmap(pic.scaled(500,600,Qt::KeepAspectRatio));
scroll->addWidget(label, row, column);
}
}
QString目录=QFileDialog::getExistingDirectory(此,
tr(“OpenDirectory”),
QDir::homePath(),
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
int nrows=1;
int ncols=1;
HorizontalScrollArea*scroll=新的HorizontalScrollArea(nrows,ncols);
布局->添加小部件(滚动);
QDir dir(目录);
dir.setNameFilters({“*.png”,“*.jpg”});
for(const QFileInfo&finfo:dir.entryInfoList()){
信息(这个“日志”,finfo.absolutePath());
int column=滚动->列计数();
对于(int行=0;行设置框架形状(QFrame::Box);
标签->设置对齐(Qt::AlignCenter);
标签->setPixmap(图片缩放(500600,Qt::KeepAspectRatio));
滚动->添加小部件(标签、行、列);
}
}
QString directory = QFileDialog::getExistingDirectory(this,
tr("OpenDirectory"),
QDir::homePath(),
QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
int nrows = 1;
int ncols = 1;
HorizontalScrollArea *scroll = new HorizontalScrollArea(nrows, ncols);
layout->addWidget(scroll);
QDir dir(directory);
dir.setNameFilters({"*.png", "*.jpg"});
for(const QFileInfo & finfo: dir.entryInfoList()){
QMessageBox::information(this,"log",finfo.absolutePath());
int column = scroll->columnCount();
for(int row=0; row < nrows; row++){
QPixmap pic(finfo.absoluteFilePath());
QLabel *label = new QLabel(QString("label: %1 %2")
.arg(row)
.arg(column));
label->setFrameShape(QFrame::Box);
label->setAlignment(Qt::AlignCenter);
label->setPixmap(pic.scaled(500,600,Qt::KeepAspectRatio));
scroll->addWidget(label, row, column);
}
}