2

私はこの問題を何時間もいじっていましたが、SOに尋ねる時が来たと判断しました:)

画像を回転させてからウィジェットのサイズを更新する Qt プログラムがあります。現在これを行うために使用しているコードは次のとおりです。

void VideoSubWindow::showFrame(const QImage& frame)
{
    QPixmap pixmap = QPixmap::fromImage(frame);
    ui->videoFrameLabel->setPixmap(pixmap);
    resizeWidgets(pixmap.size());
}

void VideoSubWindow::resizeWidgets(const QSize &size)
{
    if(frameSize != size)
    {
        frameSize = size;
        ui->videoFrameLabel->setFixedSize(size);
        ui->scrollArea->setMinimumSize(size.width() + 2, size.height() + 2);
    }
}

ウィジェットは次のように構成されています。

VideoSubWindow (QMainWindow)
 -> centralWidget (QWidget) (Vertical layout is set on this)
   -> scrollArea (QScrollArea)
     -> videoFrameLabel (QLabel)
   -> statusBar (QStatusBar)
   -> menuBar (QMenuBar)

上記のコードを実行すると、イメージを 90 度回転するなど、イメージは回転しますが、ウィンドウは新しいピックスマップ サイズに合わせてサイズ変更されません。adjustSize()and updateGeometry()on SubWindowandを呼び出そうとしましcentralWidgetたが、それらは効果がないようです。しかし、マウスで手動でウィンドウのサイズを変更すると、ウィンドウは に設定された最小サイズにスナップするため、scrollArea有効になっているようです。

誰もこれを経験していますか?ありがとう!

4

1 に答える 1

1

関数を試してみてくださいresize(...)Qtのドキュメント

adjustSize()使用されたsizeHint()関数であるためadjustSize()、SubWindow と centralWidget の呼び出しは効果がありません

于 2012-12-14T08:57:08.597 に答える