我想使用 ResizeEvent 来接收窗口的大小并将其设置为 QLabel 的大小,以便使图像拉伸并适应窗口的尺寸。通过单击鼠标左键,我可以调整我的窗口和图像采用新尺寸。
您必须有以下注意事项:
没有必要通过指针来存储 QPixmap,因为在将它传递给 QLabel 时,它是按值复制的。
因此,如果您更改 QPixmap 的大小,p 将不会反映在 QLabel 中,因为具有 QLabel 的 QPixmap 是您在开始时建立的 QPixmap 的副本。
没有必要为此任务使用布局,因为它会创建一个无限循环,因为这也会干预已经建立的小部件的 resizeEvent,因此如果您更改 QLabel 的大小,它将更改QWidget,这一次我将尝试更改QLabel,等等。
不建议修改原始 QPixmap,因为更改其大小会修改像素,并且会得到意想不到的效果。
使用上面我们得到以下代码:
*。H
#ifndef TESTSIZE_H
#define TESTSIZE_H
#include <QWidget>
class QLabel;
class testsize : public QWidget
{
Q_OBJECT
public:
explicit testsize(QWidget *parent = 0);
~testsize();
private:
QLabel *image;
QPixmap original_px;
protected:
void resizeEvent(QResizeEvent *event);
};
#endif // TESTSIZE_H
* .cpp
#include "testsize.h"
#include <QLabel>
#include <QResizeEvent>
testsize::testsize(QWidget *parent) :
QWidget(parent)
{
image = new QLabel(this);
original_px = QPixmap(":/wallpaper.jpg");
image->setPixmap(original_px);
resize(640, 480);
}
testsize::~testsize()
{
}
void testsize::resizeEvent(QResizeEvent *event)
{
QPixmap px = original_px.scaled(event->size());
image->setPixmap(px);
image->resize(event->size());
QWidget::resizeEvent(event);
}
您可以在以下链接中找到完整的示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句