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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Поведение Event Dispatcher в потоке, созданном в DLL  (Прочитано 1812 раз)
CassandraDide
Гость
« : Август 10, 2013, 21:26 »

Хай.
Есть DLL, в которой создаётся поток, в котором создаётся QApplication, QTimer, QDialog.
Суть сего — скрывать форму по таймеру. Привязал QTimer::timeout к своему слоту диалога, всё скрывается.
У диалога переопределил обработчики евентов для мыши и самого диалога, чтобы по клику на форме выскакивал стандартный виндовый MessageBox.
Теперь то, что хотелось бы понять: событие от таймера диспатчится в своё время и форма скрывается именно тогда, когда это нужно, но события мышки диспатчатся только тогда, когда я вызываю изменение размеров диалога. Если диалог не растянуть, то он так и скроется, не обработав события мышки. Почему так?
Немного кода на всякий случай:
Код
C++ (Qt)
void MThread::run()
{
 MThread::_app = new QApplication(_argc, _argv);
 _main_window = new SongTitle();
 _main_window->SetTitle(QString::fromLocal8Bit("lalala"));
 _main_window->ShowTitle();
 //this->exec();
 MThread::_app->exec();
}
Код
C++ (Qt)
void SongTitle::mouseReleaseEvent(QMouseEvent *event)
{
 MessageBoxW(0, L"in mouse event",L"",0);
 switch (event->button()){
   case Qt::LeftButton:
     MessageBoxW(0, L"left",L"",0);
     break;
   case Qt::RightButton:
     MessageBoxW(0, L"right",L"",0);
     break;
   default:
     QDialog::mousePressEvent(event);
     break;
   }
}
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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