crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 5:06