У меня есть сигнал из цикла (который выполняет некоторые вычисления), который запускает обновление индикатора выполнения, расположенного в основном графическом интерфейсе, после завершения цикла индикатор выполнения обновляется до 100% (индикатор выполнения становится скрытым, когда процесс заканчивается), но чем есть задержка, индикатор выполнения остается на 100%, а иногда мышь меняется на занято, и только через несколько секунд индикатор выполнения становится скрытым (указывает мне, что задержка заканчивается), после этого цикла ничего нет, поэтому я ничего не могу думает о том, может сделать эту задержку.
- Я должен отметить, что если вычисления цикла легкие (то есть не нужно выполнять много вычислений), такой задержки нет.
Сигнал излучения находится внутри класса на логическом уровне, я попробовал кое-что, включив <QtGui/QApplication>
в этот класс (что мне кажется неправильным, так как это логический уровень, поэтому зачем ему нужны библиотеки QtGui, но я я только что-то тестирую), я поместил следующий код qApp->processEvents();
внутри цикла, и теперь все кажется более плавным, мышь не занята, но все же есть задержка (единственное, что я могу реагировать с помощью графического интерфейса, когда эта задержка происходит, но нет обновленных результатов, пока эта задержка не закончится).
Из-за теста с processEvents()
я подумал, что это что-то связанное с потоками, но если да, то как я могу исправить поведение задержки, конечно, если кто-то думает, что это может быть что-то еще, скажите, пожалуйста.
Некоторый пример кода:
Класс логического слоя:
#include <QtGui/QApplication>
...
processMethod(...)
{
Loop(...)
{
qApp->processEvents();
emit processBarSignle(value);
...some calculations...
}
emit processBarSignle(100);
}
Слой просмотра (MainWindow):
on_btn_nextProcess_clicked()
{
m_ui->pBar_process->setVisible(true);
LogicClass->processMethod(...);
m_ui->pBar_process->setVisible(false);
}
Спасибо