ロゴ メインコンテンツへ
RSSフィード
「ソフトウェア開発」に関連する記事一覧

Qt QGLWidgetでアイドル状態のときにも描画処理を呼ぶ

2013/08/25 21:00
(この記事の文字数: 367)
Qt 

QtでOpenNIから取得した深度データを描画させるためにQGLWidget::paintGL()に描画する処理を記述したんですが、リサイズなどのイベントが発生しないとpaintGL()はコールされないため、何もしないと描画されないという状態になってしまいました。

調べてみると毎フレーム自動的に描画させるためにはやはりeventFilter()で描画を呼ぶ処理を記述しないといけないようです。

ひとまず下記のように書いたらうまく描画されるようになりました。UPDATE_INTERVALのような決めうちな値は使っているのは、毎回描画するようにしてしまうと描画処理が呼ばれすぎるせいかGUIの更新が遅れてしまったからです。


MyWidget::MyWidget( QWidget *parent )
    : QGLWidget(parent)
{
    qApp->installEventFilter( this );
}

bool MyWidget::eventFilter(QObject *obj, QEvent *e)
{
    static int n = 0;
    const int UPDATE_INTERVAL = 10;
    if( n > UPDATE_INTERVAL )
    {
        makeCurrent();
        paintGL();
        update();
        n = 0;
    }
    ++n;
    return false;
}

Qtイベントのアイドル状態とディスプレイへの描画処理完了が判定できる方法があれば、もっとましな書き方ができそうです。


  このエントリーをはてなブックマークに追加  

<<「ソフトウェア開発」の記事一覧に戻る

<<「ソフトウェア開発」の次の記事
「ソフトウェア開発」の前の記事 >>

コメント(0 件)



コンテンツロード: 0.0073 sec
Copyright(C)2006-2024 puarts All Rights Reserved