根据Window调整QLabel内的QPixmap大小

时间:2014-07-22 14:20:25

标签: c++ qt

在我的窗口类中,继承了QMainWindow,我有一个包含QPixmap的QLabel,每20ms更新一次。

我希望QLabel及其中的QPixmap根据窗口的大小调整大小。

我希望这个Central Widget占用尽可能多的空间,但也能够调整它的大小。甚至比原来的尺寸小。但始终保持比例。

实际代码:

// in the window constructor
this->setWindowFlags(Qt::Window);
this->resize(500, 300);

this->setCentralWidget(this->label);

// in the updating function
QPixmap output;
output = output.fromImage(Mat2QImage(theImage));
this->label->setPixmap(output);

现在我尝试过:

output.scaled(this->label->x(), this->label->y(), Qt::KeepAspectRatio)

但它不起作用...... 我怎么能这样做?

编辑:我正在使用Qt 5.3

2 个答案:

答案 0 :(得分:2)

QPixmap::scaled是const。下一个代码不起作用:

// in the window constructor
this->setCentralWidget(this->label);

// in the updating function
QPixmap output;
output = output.fromImage(Mat2QImage(theImage));
output.scaled( this->label->x(), this->label->y(), Qt::KeepAspectRatio );
this->label->setPixmap(output);

因为输出不会改变。也许你需要这样的东西:

// in the window constructor
this->setCentralWidget(this->label);

// in the updating function
QPixmap output;
output = output.fromImage(Mat2QImage(theImage));
output = output.scaled( this->label->x(), this->label->y(), Qt::KeepAspectRatio );
this->label->setPixmap(output);

答案 1 :(得分:0)

尝试将QLabel放入布局中。      hl = new QHBoxLayout; hl->addWidget(label); centralWidget()->setLayout(hl);

检查一下:http://qt-project.org/doc/qt-4.8/layout.html