【发布时间】:2012-06-12 18:52:31
【问题描述】:
好的,所以我想用 qt 显示图像,其中图像随浏览器调整大小并保持纵横比,同时在窗口中保持居中。我可以使用纵横比调整大小以正常工作,但是当我将其与 Qt::AlignCenter 对齐时,qwidget 不再调整大小(保持固定大小)。所以基本上,我可以选择工作但不能一起工作。
我正在尝试做的一个很好的例子是 matlab 中的 imshow() 函数。这会在保持纵横比的同时调整图像大小,并将图像在窗口中居中。我的代码是这样的:
void roilayout::resizeEvent(QResizeEvent *event)
{
QSize p(roiview->refimage->size());
p.scale(roiview->view->size(), Qt::KeepAspectRatio);
roiview->view->resize(p);
}
在构造函数中:
roiview = new roiwindow;
roiview->view->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
roiview->view->setCursor(Qt::CrossCursor);
roiview->view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
roiview->view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QHBoxLayout *layoutContainer = new QHBoxLayout;
layoutContainer->addWidget(roiview->view);
setLayout(layoutContainer);
我搜索了谷歌并找不到任何东西。不久前还问了一个类似的问题,但从答案看来,我没有足够清楚地问这个问题。谢谢。
【问题讨论】:
-
更进一步。如果将“roivewi->view->size()”替换为“this->size()”,它将随窗口调整大小。唯一的问题是图像的位置会像 76x76 像素图像一样调整大小...
标签: c++ qt alignment qwidget qgridlayout