0

基本的に、私はいくつかの画像処理を行っており、QLabel で QImage を使用してビデオ シーケンスの現在のフレームを表示しています。QImage を 30 fps で次のフレームに更新したいとしましょう (または、30 fps 間隔で処理が行われない場合は、処理が完了するまで待ちます)、その 30 fps の間にプログラム全体を停止させたくありません。 .

というわけで流れは…

if (done_some_work && 30fps_interval_has_passed)
{
   updateQImage();
}

これはQtでどのように行われますか? ありがとう!

4

2 に答える 2

1

QTimerを使用して信号を送信し、1000/30 ミリ秒ごとにフレームを再描画します。

myTimer= new QTimer(this);
myTimer->setInterval(1000/fps); // ms
connect(myTimer, SIGNAL(timeout()), this, SLOT(doNextFrame())); 

// where
public slots:
    virtual void doNextFrame() {repaint();}
于 2012-04-30T17:37:55.340 に答える
0

コメントは正しいです。何かを視覚的に更新したい場合は、別のスレッドで作業を行ってから、UI スレッドを更新することを通知する必要があります。UI スレッドで処理を行わないでください。GUI が応答しなくなります。これは QT に関する質問ではなく、GUI に関する質問です。

于 2012-04-30T17:36:17.343 に答える