如何在QLabel内调整图像大小

时间:2010-11-26 13:42:12

标签: qt custom-controls widget

我正在Qt中开发一个自定义插件,在这种情况下,我必须构建一个小部件,其上有一些图像。所以我使用QLabel作为我的自定义小部件的基类。这是绘制事件的代码

     QPixmap pic("/general/source/pic.png");
     setAutoFillBackground(true);
     QPalette palette;
     palette.setBrush(QPalette::Window, QBrush(pic));

     this->setPalette(palette);

现在图像在QLabel上呈现,但这不是我想要的。

  1. 我希望图像缩放到QLabel的大小。
  2. 当QLabel的尺寸超出图像尺寸时,我不希望图像重复自我。
  3. 请帮忙。

3 个答案:

答案 0 :(得分:3)

假设您可以获得控件的大小,您可以在使用

在画笔中设置之前缩放像素图。
pic.scaled ( width, height, Qt::IgnoreAspectRatio, Qt::FastTransformation )

这将返回另一个QPixmap,您可以将其传递给QBrush。

仅供参考,您还可以使用样式表为控件设置边框图像。

border-image: url( yourImage);

答案 1 :(得分:2)

尝试使用QLabel功能

setScaledContents(true);

答案 2 :(得分:-1)

如果您有自定义窗口小部件类,则可以覆盖paintEvent并在该点执行正确的绘制。我不知道你是否可以将像素图缩放到适当大小并调用父类来完成绘图,或者你是否必须自己完成所有这些操作。