Russian Qt Forum
Ноябрь 24, 2024, 06:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: GetMessage в Qt  (Прочитано 3739 раз)
green5
Гость
« : Декабрь 17, 2006, 10:27 »

Хотелось бы чтото типа в QThread

void run()
{
  ...
  while(getMessage(QEvent e,timeout))
  {
     switch(e->type())
     {
        ...
        default: dispatchMessage(e);
      }
   }
}

а не распихивать все по функциям-слотам. Как напрямую достучаться до очереди евентов среада. Просто иногода проще (и привычнее) писать так
Записан
bigirbis
Гость
« Ответ #1 : Декабрь 17, 2006, 12:47 »

Переопредели для него eventFilter, и будет тебе счастье! Улыбающийся
Записан
Dendy
Гость
« Ответ #2 : Декабрь 17, 2006, 13:18 »

QThread - очень лёгкий класс, всего лишь обёртка для потока. Сам QThread не предназначен для обработки собьІтий. Обьектно-ориентированное программирование рулит!

Код:
class MyHandler : public QObject
{
protected:
    bool event( QEvent * e )
    {
        switch ( e->type() )
        {
        case SomeEvent:
            ...
        }
    }
};


void MyThread::run()
{
     MyHandler handler;
     exec();
}
Записан
green5
Гость
« Ответ #3 : Декабрь 17, 2006, 15:16 »

Ну eventFilter таже самая функия-slot : вызвали на один event и return.
Для простых thread (типа получил запрос/отправил файл) да стандарный способ ok. А для длительных не очень, многие временные переменные надо
в определение классов, а так на стеке. Хотя дело вкуса
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 20.