我已经阅读了Qt用于调整策略的文档,但我无法找到如何实现更改图像大小以适应Qlabel的新大小的方案。
这是我的GUI结构
mainLayout:
toplayout:
QLabel
QPushButton
现在我有cv::Mat
张图片。我已转换为QPixmap
。
Window::Window(QWidget *parent): QDialog(parent)
{
// Widgets
browserButton = new QPushButton(tr("Open"));
imageLabel = new QLabel;
imageLabel->setAlignment(Qt::AlignHCenter);
imageLabel->setScaledContents(true);
// Connect Actions
connect(browserButton, SIGNAL(clicked()), this, SLOT(browserClicked()));
// Layouts
QVBoxLayout *topLayout = new QVBoxLayout;
topLayout->addWidget(imageLabel);
topLayout->addWidget(browserButton);
// Main Layout
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(topLayout);
setLayout(mainLayout);
setWindowTitle("Image Browser");
}
这是按钮
void Window::browserClicked()
{
// Get file name as QString
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"),
NULL,
tr("Image Files (*.png *.jpeg *.jpg *.bmp)"));
// Read file name as String not QString and store the image
m_original_CVimg = cv::imread(fileName.toStdString());
imageLabel->setPixmap(this->cvMatToQPixmap(m_original_CVimg));
}
每次用户更改窗口大小时,我都希望调整图像的大小。如果我展开窗口,图像也会扩展,但问题是如果缩小窗口,窗口的大小将限制为图像的大小。任何建议