qt :: qfiledialog第二次称为我的应用程序

Qt::QFileDialog crashes my application when called a second time

本文关键字:我的 应用程序 第二次 qfiledialog qt      更新时间:2023-10-16

我是QT和OpenCV的新手,并且正在创建一个集成的项目。我遇到的问题是我有一个使用qfiledialog的文件按钮。整个东西运行顺利,我的文件加载。但是,如果我第二次单击"加载"按钮,它会崩溃。似乎问题出现在致电Qfiledialog :: getopenfilename时,但我需要专家意见。

这是单击按钮的功能。

void MainWindow::on_pushButton_clicked()
{
    QFileDialog dialog(this);
    dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg)"));
    dialog.setViewMode(QFileDialog::Detail);
//    dialog.setAttribute(Qt::WA_DeleteOnClose);
//    dialog.DontUseNativeDialog;
    filename = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                "/home",
                                                tr("Images (*.png *.xpm *.jpg)"));
    imageObject = new QImage();
    imageObject->load(filename);
    image = QPixmap::fromImage(*imageObject);
    scene = new QGraphicsScene(this);
    scene->addPixmap(image);
    scene->setSceneRect(image.rect());
    ui->graphicsView->setScene(scene);
    ui->graphicsView->fitInView(scene->sceneRect(),Qt::KeepAspectRatio);
    cvHandler = new OpenCVHandler(filename.toStdString());
}

我已经尝试了两行评论。我的搜索也什么都不容易理解:

从qitemdelegate的自定义编辑器拨打getopenfilename时崩溃

qfiledialog打开第二个(可能是父母)不需要的窗口

QT文件对话框渲染错误并崩溃

如果完全相关,我正在使用Ubuntu 16.04 LTS系统。

谢谢

问题在评论行中。我没有正确使用对话。在getopenfileName函数中使用它可以做到的技巧:

filename = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                "/home",
                                                tr("Images (*.png *.xpm *.jpg)"),0,QFileDialog::DontUseNativeDialog);

谢谢大家。