Qt-creator: мой QMessageBox не закрывается

Я использую QMessageBox предупредить пользователя, если он по ошибке нажал кнопку «Удалить». когда пользователь нажимает кнопку Ok в QMessageBoxвызывается функция для удаления строки из QTableView (это связано с базой данных). после удаления следует обновить QTableView и показать новые данные (без удаленной строки).

теперь, когда пользователь нажимает Delete button, предупреждение QMessageBox появляется. затем, когда он нажимает ОК, строка удаляется из QTableView, на данный момент я ожидаю QMessageBox исчезнуть, и новая обновленная версия QTableView чтобы показать, что не происходит !! вместо QMessageBox появляется снова, и обновление должно быть сделано вручную (так как я только запускаю приложение) .. почему это происходит?

вот мой код:

QMessageBox msg;
msg.setIcon(QMessageBox::Warning);
msg.setText("Delete");
msg.setInformativeText("continue ?");
msg.setDetailedText("Delete permanently");
msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msg.setDefaultButton(QMessageBox::Cancel);

int ret = msg.exec();
if(ret == 1024){
msg.Close;
deleteDataBaseRecord(); // connect to server and delete DB data which is then show the QTableView again
}
else {
msg.Close;
}

0

Решение

У вас нет () на вызовах Close … это действительно C ++?

Не используйте ключевые слова (delete) в качестве имен функций.

Также не используйте константы (1024), когда есть доступные имена.

0

Другие решения

Вам следует позвонить msg.close() (без заглавной буквы C) закрыть msg окно сообщения.

Дополнительно возвращаемое значение QMessageBox::exec() метод может быть QMessageBox::Ok если кнопка ОК была нажата. На самом деле, QMessageBox::Close (в твоем случае msg.Close) может быть одной из этих кнопок.

0

По вопросам рекламы [email protected]