非 QT アプリケーションに接続する DLL があります。DLL で QThread および QApplication インスタンスを作成し、イベント ループを実行します。そして、4秒後にダイアログを非表示にするQDialogとQTimerがあります。また、mousePressEvent をオーバーライドしましたが、正しく動作しませんでした。オーバーライドされた関数は、ダイアログのサイズを変更したときにのみ呼び出されます。サイズ変更を行わないと、ダイアログが非表示になり、mousePressEvent 関数が呼び出されませんでした。
スレッド:
void MThread::run()
{
MThread::_app = new QApplication(_argc, _argv);
_main_window = new SongTitle();
_main_window->SetTitle(QString::fromLocal8Bit("lalala"));
_main_window->ShowTitle();
MThread::_app->exec();
}
マウスイベント:
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;
}
}
この動作を修正するにはどうすればよいですか?