2010-11-26 153 views
2

我正在Qt中开发一个自定义插件,并且存在这种情况,在这种情况下,我必须构建一个包含一些图像的小部件。所以我使用QLabel作为我的自定义小部件的基类。以下是绘图事件的代码如何调整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

假设你在刷使用

pic.scaled (width, height, Qt::IgnoreAspectRatio, Qt::FastTransformation) 

这将返回另一个QPixmap的,你可以通过你的QBrush设置它之前,你可以得到你的控制,你可以扩展你的像素图的大小。

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

border-image: url(yourImage); 
+0

这不是不为我工作:( – chai 2010-11-27 11:24:48

+0

什么没有完全工作的?像没有规模?它没有正确缩放?你可以用” t获取控件的大小? – Liz 2010-11-30 23:38:43

-1

如果您有一个自定义控件类,您可以覆盖paintEvent并在此时进行正确的绘图。我不知道你是否可以绘制缩放到适当大小的像素图并调用父级的类来完成绘图,或者如果你必须自己完成所有操作。

2

尝试使用QLabel功能

setScaledContents(true);