Я использую 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;
}
У вас нет () на вызовах Close … это действительно C ++?
Не используйте ключевые слова (delete) в качестве имен функций.
Также не используйте константы (1024), когда есть доступные имена.
Вам следует позвонить msg.close()
(без заглавной буквы C) закрыть msg
окно сообщения.
Дополнительно возвращаемое значение QMessageBox::exec()
метод может быть QMessageBox::Ok
если кнопка ОК была нажата. На самом деле, QMessageBox::Close
(в твоем случае msg.Close
) может быть одной из этих кнопок.