crossplatform.ru

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


  Ответ в Рекурсивный перебор + QLabel
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Rocky Дата 27.1.2011, 16:33
 
Цитата(breeve @ 27.1.2011, 15:50) *
Только не совсем понимаю как работает этот процесс ивентс

Ну, можно в assistant-е почитать... ;)

Доставляет все сообщения в главный цикл приложения. Отличный способ избавиться от "зависаний" программы во время совершения длительных операций.
breeve Дата 27.1.2011, 15:50
 
Цитата(Rocky @ 26.1.2011, 8:58) *
Ну можно попробовать поставить задержку (через таймер) на начало работы функции, чтобы успело все отразиться, а потом из функции делать вызов qApp->processEvents().

Если я правильно понял тогда получится что перед тем как запуститься функция, разок покажет Лэйбл с нулями, и затем функция начнет работать. И только после окончания функции он снова обновит Лэйбл.
Нужно чтобы было примерно как, если в бесконечном цикле прибавлять по единичке к переменной, и затем через qDebug() ее выводить. Одна цифра будет сменяться другой оч быстро. Пытаюсь тоже самое только лэйбл. выводить.

Цитата(Rocky @ 27.1.2011, 15:26) *
Так processEvents вызывается где-нибудь из рекурсивной функции или нет?

Сделал все заработало. О_о Только не совсем понимаю как работает этот процесс ивентс..
Rocky Дата 27.1.2011, 15:26
  Так processEvents вызывается где-нибудь из рекурсивной функции или нет?
breeve Дата 27.1.2011, 15:20
  Ничего не получается.
Как я понял дело не во времени, сделал условие чтобы выводил когда число кратно 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);
}
abc Дата 27.1.2011, 14:00
  попробуй при каждой итерации:
qlabel->repaint()
Rocky Дата 26.1.2011, 8:58
  Ну можно попробовать поставить задержку (через таймер) на начало работы функции, чтобы успело все отразиться, а потом из функции делать вызов qApp->processEvents().
breeve Дата 25.1.2011, 20:43
  Есть рекурсивная функция которая увеличивает переменную. Эта переменная в течении секунд 10-15 увеличивается, затем остается неизменной.
Необходимо чтобы эта переменная выводилась в лэйбл все время, т.е пока функция подсчитывает, видеть какое сейчас значение.
Я сделал чтобы при запуске функции он выставлял значение в лэйбл, но он меняет так быстро что окно не появляется пока функция не закончит работу.
Как сделать чтобы окно открылось а в нем изменялось число?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 1:55