2013-05-05 39 views
3

我是中国人,英语水平很差,所以我展示了代码来表达自己。如何通过paintEvent在儿童视图中绘制图像

class Widget:public QWidget 
{ 
private: 
//As a child object of Widget object 
    QLabel* label; 

}; 

// Override the paintEvent 
void Widget::paintEvent(QPaintEvent* event) 
{ 
//How to draw a picture in the QLabel not in the full Widget's view,thx!! 
} 

回答

1

首先,您需要初始化您的标签在构造函数中添加像这样:

void Widget::Widget() 
{ 
    label=new QLabel(this); 
} 

,然后你的paintEvent做这样的事情 -

void Widget::paintEvent(QPaintEvent* event) 
{ 
    // create QPixmap or QImage object or how else you store it and load it to label 
    QImage img("./myimage.jpg"); 
    label->setPixmap(img.pixmap()); 
} 

,这将是在标签上绘制,但默认情况下,标签的尺寸正在增加sizePolicy - 如果您的小部件没有任何其他对象,将会调整大小以填充尽可能多的空间 - 您的标签将占据整个空间,因此它将会l条好你的QLabel添加一些布局(QGridLayout),你需要你的QLabel的setSizePolicyQSizePolicy::Maximum

+0

THX,我已经做了你有什么done.But结果 – user1937666 2013-05-05 12:52:01

+0

已经更新的答案,它的布局和SizePolicy让你感到困惑 – Shf 2013-05-05 12:53:09

+0

thx,但我已经完成了你所做的。 – user1937666 2013-05-05 12:53:21