Qt C ++ мешает программе показывать сообщения об ошибках, когда занят

Привет у меня есть вопрос, касающийся сообщений об ошибках.

У меня есть окно с несколькими кнопками, включая кнопку ОК и кнопку Отмена. Моя кнопка OK запускает программу, которая перемещает некоторые серии графиков, и для этого ей нужно прочитать много данных из файла и сместить эти значения. Кнопка Отмена отменяет эту операцию. Расчеты не могут быть разделены на меньшие части кода.

Это хорошо работает для меньшего количества данных, но когда я использую его с большими наборами данных, программа действует так, как будто оно сломалось. Тем не менее, через некоторое время все возвращается в норму, расчет сделан.

Есть 2 вещи, которые мне не нравятся:

  • 1) Когда я оставляю программу одну, программа меняет заголовок моего окна на ….(Кейн Рюкмелдунг) что означает отсутствие ответа.

    введите описание изображения здесь

    После окончания расчета текст …(Кейн Рюкмелдунг) исчезает в шапке и все возвращается на круги своя.

  • 2) Когда я пытаюсь нажать кнопку «Отмена» в моем окне во время выполнения расчета, появляется дополнительное окно:

    введите описание изображения здесь

    Там снова, когда я оставляю программу в покое и вычисление закончено, это окно исчезает (как и (keine Rückmeldung) в заголовке моего окна), и все возвращается на круги своя.

Для решения проблемы 2 я попытался отключить кнопку «Отмена», но это не помогло. Слот, находящийся без кнопки отмены, исполняется в любом случае.

Мой вопрос сейчас: так как я не хочу, чтобы пользователь видел эти сообщения об ошибках, есть ли способ, чтобы программа не показывала их?

Спасибо

1

Решение

Рассмотрите возможность использования QThread для дорогих вычислительных задач. Или лучше, вы можете использовать другие встроенные многопоточные утилиты, такие как QConcurrentRun а также QFuture.

Затем вы можете легко узнать состояние фоновой функции и показать окно загрузки или позволить пользователю выполнять другие операции в это время.

1

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

Других решений пока нет …

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