Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QScrollara图像立即消失_Qt_Qimage_Qscrollarea - Fatal编程技术网

Qt QScrollara图像立即消失

Qt 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

我编写了下面的代码,以便在滚动区域的特殊目录中显示图像。但当我触发actionOpen时,图像将立即消失。如何使图像稳定

main window.cpp

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);
    }
}