crossplatform.ru

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


  Ответ в а обработка событий виджетов однопоточна?
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
kuler Дата 27.10.2008, 10:42
 
Цитата(sploid @ 24.10.2008, 22:23) *
"длинные" методы вызываются в отдельном потоке

в курсе, но это геморройно
sploid Дата 24.10.2008, 21:23
  kuler что бы гуйня не тормозила, "длинные" методы вызываются в отдельном потоке.
kuler Дата 24.10.2008, 16:33
 
Цитата(Litkevich Yuriy @ 24.10.2008, 16:59) *
Цитата(kuler @ 24.10.2008, 19:43) *
там нет цикла, а есть вызов одного метода который тормозит
посути одно и тоже, длительный процесс.

Я на эту грблю не разу не наступал, т.к. прочитал про нее в книжке немногим раньше, чем начал маломальски сложные программы на Дельфи-3 писать, а книжка была очень хорошая, правда забыл как называлась, помню, что про Дельфи-2

имхо, правильней сказать что не сталкивались, ибо этот метод не мной написан, а вызывать нада, да и не должно быть в нормальном методе всякого лишнего мусора типа updatecomponent (во всяком случае в случае если неизвестно сколько будет длиться процесс)
Litkevich Yuriy Дата 24.10.2008, 15:59
 
Цитата(kuler @ 24.10.2008, 19:43) *
там нет цикла, а есть вызов одного метода который тормозит
посути одно и тоже, длительный процесс.

Я на эту грблю не разу не наступал, т.к. прочитал про нее в книжке немногим раньше, чем начал маломальски сложные программы на Дельфи-3 писать, а книжка была очень хорошая, правда забыл как называлась, помню, что про Дельфи-2
kuler Дата 24.10.2008, 15:43
  sploid,
как это не обрабатываю? обработчик таймера есть и он начинает срабатывать сразу после тормоза
Litkevich Yuriy,
там нет цикла, а есть вызов одного метода который тормозит

вообще то да, в билдере тоже не срабатывает пока не завершится тормоз

__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  /*B* b = new B;
  IB* ib = (IB*)b;
  b->met1();*/
  t->Enabled = true;

}
//---------------------------------------------------------------------------
не сработает в следующий раз пока не завершится а()
void __fastcall TForm1::tTimer(TObject *Sender)
{
a();
}
//---------------------------------------------------------------------------
void a()
{
        int c = 1;
  for (int i = 0; i < 2000; i++)
  for (int j = 0; j < 1000000; j++)
    c++;
}
Litkevich Yuriy Дата 24.10.2008, 15:32
  kuler, обработка GUI событий происходит в главном потоке. Из псевдо кода не понятно как ты собирался управлять индикатором выполнения.

в длительных циклах всегда надо вставлять такие вещи как показал sploid
sploid Дата 24.10.2008, 15:11
  в цикле обработки данных вызывай:
void QCoreApplication::processEvents ( QEventLoop::ProcessEventsFlags flags, int maxtime ) [static]

а то что нет таймера так и должно быть, ты же не обрабатываешь сообщения.
kuler Дата 24.10.2008, 14:05
  а то сделал окно с прогресс баром, чтобы когда чтото грузится его показывать, а там прогресс бар не обновляется пока все не прогрузится, а затем уже начинает обновляться

примерный код

new qwidget
show

dataprocess

delete widget

врубил в виджете таймер, а он тоже не срабатывает (вот это вообще нонсенс)
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 20:12