gpt4 book ai didi

c++ - 当 QFileDialog::getOpenFileName 窗口打开时,程序意外结束

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:11:24 24 4
gpt4 key购买 nike

我正在编写一个简单的 Qt 应用程序来测试多线程(这对我来说也是全新的)。我制作了一个 QApplication 来管理 GUI,然后我编写了一个包含类 MainWindow 的类 VisionApp,它是一个子类QMainWindow 的。

在 MainWindow 类中,我编写了一个函数 void MainWindow::getfromfilevd(),它使用以下方法连接到按钮:

QObject::connect(ui->FileVdButton,SIGNAL(clicked()),this,SLOT(getfromfilevd()));

然后我想使用 QFileDialog::getOpenFileName 从文件中读取图像,我的代码在这里:

void MainWindow::getfromfilevd()
{
//mutex.lock();
from_imgorvd = true;

QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"),"", tr("Image Files (*.png *.jpg *.bmp *.xpm)"));
if(fileName.isEmpty()) {
cv::Mat image;
image = cv::imread(fileName.toUtf8().constData(), CV_LOAD_IMAGE_COLOR);
mutex.lock();
Mat_Img = image.clone();
mutex.unlock();
}
}

然而,每次我点击按钮,QFileDialog的窗口打开,但它是空白的,然后我的程序意外结束。

当我使用这段代码时:

void MainWindow::getfromfilevd()
{

from_imgorvd = true;

cv::Mat image;
image = cv::imread("/home/somnus/Picture/mouse.jpg", CV_LOAD_IMAGE_COLOR);
if(! image.data) {
std::cout << "Could not open or find the image" << std::endl ;
}
else {
mutex.lock();
Mat_Img = image.clone();
mutex.unlock();
}

}

效果不错。

我真的很想知道我犯了哪个错误......希望得到您的帮助

最佳答案

应该是这样的,!fileName.isEmpty() 而不是fileName.isEmpty() 因为需要在文件名不为空的时候加载图片不是相反。

关于c++ - 当 QFileDialog::getOpenFileName 窗口打开时,程序意外结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16240608/

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