Есть рекурсивная функция которая увеличивает переменную. Эта переменная в течении секунд 10-15 увеличивается, затем остается неизменной.
Необходимо чтобы эта переменная выводилась в лэйбл все время, т.е пока функция подсчитывает, видеть какое сейчас значение.
Я сделал чтобы при запуске функции он выставлял значение в лэйбл, но он меняет так быстро что окно не появляется пока функция не закончит работу.
Как сделать чтобы окно открылось а в нем изменялось число?
Ну можно попробовать поставить задержку (через таймер) на начало работы функции, чтобы успело все отразиться, а потом из функции делать вызов qApp->processEvents().
попробуй при каждой итерации:
qlabel->repaint()
Ничего не получается.
Как я понял дело не во времени, сделал условие чтобы выводил когда число кратно 1000 т.е ну это примерно раз в 1-2 сек. Он все равно не выводит. Причем ту переменную которая не меняется он выводит, а которые меняються нет.
Думаю попробовать через QThead.
А можно как нибудь создать дополнительный поток не создавая при это класс?
Конструктор:
{
...
vLay = new QVBoxLayout;
info = new QLabel;
vLay->addWidget(info);
setLayout(vLay);
// showInfo(str_path);
this->show();
recSearch(str_path);
showInfo(str_path);
}
....
....
// Функция которая подсчитывает
recSearch(QString s):
{
...
//this->repaint();
//info->repaint();
...
foreach(..)
{
if(AllFiles % 1000 == 0)
{
showInfo(str_path);
info->repaint();
this->repaint();
}
if( ... )
recSearch(...);
else if( ... )
incFiles(SystemInfo::Audio); // увеличивает переменную
}
//showInfo(str_path);
return true;
}
showInfo(QString dir)
{
QString result = "";
result += "Path: " + dir + "\n";
if(showAudio)
{
result += "Audio:\t" +
QString::number(AudioFiles, 10) +
" files \t" +
QString::number(printShortSize(sAudioFiles)) +
printTextSize(sAudioFiles) + "\n";
}
result += "All:\t" +
QString::number(AllFiles, 10) +
" files \t" +
QString::number(printShortSize(sAllFiles)) +
printTextSize(sAllFiles) + "\n";
qDebug() << result;
info->setText(result);
}
Так processEvents вызывается где-нибудь из рекурсивной функции или нет?
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)