Показать неконстантную строку (сообщение об ошибке) в Qt - PullRequest
0 голосов
/ 01 декабря 2018

Недавно мне пришлось кодировать какую-то проверку ввода в проекте Qt GUI.
Во время неудачного процесса проверки я хотел бы сообщить пользователю, что именно пошло не так.Следовательно, я создал QMessageBoxes с краткой сводкой и подробным сообщением об ошибке, полученным std :: exception :: what ().

Увы, QMessageBoxes получает константные строки, но исключение :: what () возвращает неконстантную C-подобную строку.

Какой лучший способ решить /обойти эту проблему?Мне нужен временный обычный виджет с возможностью отображать сообщение об ошибке во время выполнения, не редактируемое, но желательно копируемое.Возможно, QMessageBox не лучший кандидат для этого?

Из-за внешних ограничений я использую Qt 5.7 с C ++ 11 и без Qt Quick.

РЕДАКТИРОВАТЬ: Ради будущегочитатель: Это решение, кажется, работает:

try{ // ...
}
catch (const out_of_range& e){
                QMessageBox(QMessageBox::Critical, "Knoten zu groß", QString::fromStdString(static_cast<const string&>("short info. error message:\n" + static_cast<string>(e.what()))));

1 Ответ

0 голосов
/ 01 декабря 2018

Вы можете использовать const_cast, чтобы привести объект к константам и наоборот

Пример cppreference.com

...