crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Рекурсивный перебор + QLabel
breeve
  опции профиля:
сообщение 25.1.2011, 20:43
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Есть рекурсивная функция которая увеличивает переменную. Эта переменная в течении секунд 10-15 увеличивается, затем остается неизменной.
Необходимо чтобы эта переменная выводилась в лэйбл все время, т.е пока функция подсчитывает, видеть какое сейчас значение.
Я сделал чтобы при запуске функции он выставлял значение в лэйбл, но он меняет так быстро что окно не появляется пока функция не закончит работу.
Как сделать чтобы окно открылось а в нем изменялось число?

Сообщение отредактировал breeve - 25.1.2011, 20:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
breeve
  опции профиля:
сообщение 27.1.2011, 15:20
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Ничего не получается.
Как я понял дело не во времени, сделал условие чтобы выводил когда число кратно 1000 т.е ну это примерно раз в 1-2 сек. Он все равно не выводит. Причем ту переменную которая не меняется он выводит, а которые меняються нет.
Думаю попробовать через QThead.
А можно как нибудь создать дополнительный поток не создавая при это класс?

Code
 Конструктор:
{
    ...
    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);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.4.2024, 18:28