C++ 更改子窗口大小后调整父窗口的大小
我已经处理这个问题好几个小时了,决定是时候问这个问题了:) 我有一个Qt程序,可以旋转图像,然后更新小部件的大小。下面是我目前正在使用的代码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
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我可能不明白您想做什么,但您应该尝试调整滚动区域的大小……我昨天尝试了这个,但仍然没有乐趣:(我不知道当图像大小改变时如何调整窗口大小。