簡體   English   中英

當QFileDialog :: getOpenFileName窗口打開時,程序意外完成

[英]when the window of QFileDialog::getOpenFileName opening, the program has unexpected finished

我正在編寫一個簡單的Qt應用程序來測試多線程(這也是我的新手)。我創建了一個QApplication來管理GUI,然后編寫了VisionApp類,其中包含MainMain類,它是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()因為您需要在文件名不為空時加載圖像,而不是相反。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM