Недавно мне пришлось кодировать какую-то проверку ввода в проекте 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()))));