QMainWindow を継承する MyWindow。MyWindow には、アニメーションを表示する QGLWidget が含まれています。
問題は、メニューを開くかウィンドウのサイズを変更するたびにアニメーションが一時停止することです。
アニメーションは、次のようQCoreApplication::postEvent(this, new QEvent(QEvent::UpdateRequest))
に定期的に呼び出してから、ウィンドウが を受け取るたびに再描画を呼び出すことによって実装されますQEvent::UpdateRequest
。
bool MyWindow::event(QEvent *event)
{
qDebug() << event;
switch (event->type())
{
case QEvent::UpdateRequest:
render();
return true;
default:
return QMainWindow::event(event);
}
}
からわかるようqDebug()
に、メニューが開いている間、またはウィンドウのサイズが変更されている間、ウィンドウは更新要求イベントの受信を停止します。
QMainWindow/QWidget に更新要求イベントを受信し続けるための設定はありますか? または、アニメーションを実装するためのより良い方法はありますか?
編集:私はMac OS Xを使用しています。