C++ 更改子窗口大小后调整父窗口的大小

C++ 更改子窗口大小后调整父窗口的大小,c++,qt,layout,C++,Qt,Layout,我已经处理这个问题好几个小时了,决定是时候问这个问题了:) 我有一个Qt程序,可以旋转图像,然后更新小部件的大小。下面是我目前正在使用的代码 void VideoSubWindow::showFrame(const QImage& frame) { QPixmap pixmap = QPixmap::fromImage(frame); ui->videoFrameLabel->setPixmap(pixmap); resizeWidgets(pixma

我已经处理这个问题好几个小时了,决定是时候问这个问题了:)

我有一个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度,图像将旋转,但窗口不会调整大小以适应新的pixmap大小。我曾尝试在
子窗口
centralWidget
上调用
adjustSize()
updateGeometry()
,但这些似乎没有任何效果。但是,如果我用鼠标手动调整窗口大小,窗口将捕捉到为
滚动区域设置的最小大小,因此这似乎正在生效

有人有这方面的经验吗?谢谢

尝试使用
调整大小(…)
功能:


adjustSize()
使用了
sizeHint()
函数,因此在子窗口和centralWidget上调用
adjustSize()
不会有任何效果

感谢您的建议,但我尝试使用
滚动区域大小调整
centralWidget
VideoSubWindow
的大小,但没有改变:-\n我可能不明白您想做什么,但您应该尝试调整滚动区域的大小……我昨天尝试了这个,但仍然没有乐趣:(我不知道当图像大小改变时如何调整窗口大小。