QFileDialog нажимаю cancel но все равно выходит окно

Здраствуйте при нажатии на кнопку я вызываюQFileDialog но при нажатии кнопку Cancel или при нажатии на крестик в диалогов окне в QFileDialog, мое окно все равно окно все равно создается. Я новичок поэтому не ругайтесь))) тот самый фрагмент кода когда я вызываю QFileDialog:

    QString ImageName = QFileDialog::getOpenFileName(this, tr("Choose image"),"", tr("Images (*.png *.jpg *.jpeg *.bmp *.gif)"));

if(QString::compare(ImageName,QString()) !=0)
{
    QImage image;
    bool valid = image.load(ImageName);

    if(valid)
    {
        ui->lbl_image->setPixmap(QPixmap::fromImage(image));
    }
    else
    {
        QMessageBox::warning(this, "error", "could not open the image");
    }
}

Ответы (1 шт):

Автор решения: Bearded Beaver

Если в диалоге нажали "отмена", диалог возвращает нулевую строку

https://doc.qt.io/qt-5/qfiledialog.html#getOpenFileName

Проверка на нулевую строку в Qt делается методом isNull, для нулевой строки проверка isEmpty также вернет true

https://doc.qt.io/qt-5/qstring.html#isEmpty

https://doc.qt.io/qt-5/qstring.html#isNull

Qt makes a distinction between null strings and empty strings for historical reasons. For most applications, what matters is whether or not a string contains any data, and this can be determined using the isEmpty() function.

В вашем случае

QString ImageName = QFileDialog::getOpenFileName ...
if(!ImageName.isEmpty())
{
...
→ Ссылка