如何通过paintEvent在子视图中绘制图像

时间:2013-05-05 12:32:52

标签: c++ qt

我是中国人,英语很差,所以我展示代码来表达自己。

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 个答案:

答案 0 :(得分: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());
}

它将在tha标签上绘制,但默认情况下,label已经增长了sizePolicy - 如果你的小部件没有任何其他对象,它将被调整大小以填充尽可能多的空间 - 你的标签将占用整个空间,所以最好将QLabel添加到某些布局(QGridLayout),并且需要{QL}的setSizePolicy QSizePolicy::Maximum