Хай.
Есть 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;
}
}