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 шт):
Если в диалоге нажали "отмена", диалог возвращает нулевую строку
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())
{
...