在我的窗口类中,继承了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
答案 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);