Russian Qt Forum

Qt => Общие вопросы => Тема начата: green5 от Декабрь 17, 2006, 10:27



Название: GetMessage в Qt
Отправлено: green5 от Декабрь 17, 2006, 10:27
Хотелось бы чтото типа в QThread

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

а не распихивать все по функциям-слотам. Как напрямую достучаться до очереди евентов среада. Просто иногода проще (и привычнее) писать так


Название: GetMessage в Qt
Отправлено: bigirbis от Декабрь 17, 2006, 12:47
Переопредели для него eventFilter, и будет тебе счастье! :)


Название: GetMessage в Qt
Отправлено: Dendy от Декабрь 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();
}


Название: GetMessage в Qt
Отправлено: green5 от Декабрь 17, 2006, 15:16
Ну eventFilter таже самая функия-slot : вызвали на один event и return.
Для простых thread (типа получил запрос/отправил файл) да стандарный способ ok. А для длительных не очень, многие временные переменные надо
в определение классов, а так на стеке. Хотя дело вкуса