Qt::QFileDialog 第二次调用时我的应用程序崩溃
Qt::QFileDialog crashes my application when called a second time
我对 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());
}
注释掉的两行我都试过了。我的搜索也没有找到任何我可以轻松理解的内容:
Crash when calling getOpenFileName from QItemDelegate's custom editor
QFileDialog opens a second (possibly parent) unwanted window
如果相关的话,我使用的是 Ubuntu 16.04 LTS 系统。
谢谢
问题出在注释行中。我没有正确使用 dialog.DontUseNativeDialog。在 getOpenFileName 函数中使用它就可以了:
filename = QFileDialog::getOpenFileName(this, tr("Open File"),
"/home",
tr("Images (*.png *.xpm *.jpg)"),0,QFileDialog::DontUseNativeDialog);
谢谢大家
我对 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());
}
注释掉的两行我都试过了。我的搜索也没有找到任何我可以轻松理解的内容:
Crash when calling getOpenFileName from QItemDelegate's custom editor
QFileDialog opens a second (possibly parent) unwanted window
如果相关的话,我使用的是 Ubuntu 16.04 LTS 系统。
谢谢
问题出在注释行中。我没有正确使用 dialog.DontUseNativeDialog。在 getOpenFileName 函数中使用它就可以了:
filename = QFileDialog::getOpenFileName(this, tr("Open File"),
"/home",
tr("Images (*.png *.xpm *.jpg)"),0,QFileDialog::DontUseNativeDialog);
谢谢大家