【发布时间】:2012-12-02 02:07:56
【问题描述】:
我已经为这个问题困扰了好几个小时,并决定是时候问 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 度,图像将被旋转,但窗口不会调整大小以适应新的像素图大小。我曾尝试在SubWindow 和centralWidget 上调用adjustSize() 和updateGeometry(),但这些似乎效果为零。但是,如果我用鼠标手动调整窗口大小,窗口会捕捉到为scrollArea 设置的最小大小,所以这似乎正在生效。
有人有这方面的经验吗?谢谢!
【问题讨论】: