私はこの問題を何時間もいじっていましたが、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 SubWindow
andを呼び出そうとしましcentralWidget
たが、それらは効果がないようです。しかし、マウスで手動でウィンドウのサイズを変更すると、ウィンドウは に設定された最小サイズにスナップするため、scrollArea
有効になっているようです。
誰もこれを経験していますか?ありがとう!