3

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

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!!
}
4

1 回答 1

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 标签上,但默认情况下,标签的 sizePolicy 会不断增长 - 如果您的小部件没有任何其他对象,它将调整大小以填充尽可能多的空间 - 您的标签将占据整个空间,因此它将最好将您的 QLabel 添加到某些布局 ( QGridLayout) 中,您需要将setSizePolicyQLabel 添加到QSizePolicy::Maximum

于 2013-05-05T12:47:09.263 回答