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());
}

それはラベルに描画されますが、デフォルトではラベルのサイズは大きくなります.ウィジェットに他のオブジェクトがない場合は、可能な限り多くのスペースを埋めるようにサイズが変更されます.ラベルはスペース全体を取るため、いくつかのレイアウトに QLabel を追加するとよいでしょう ( QGridLayout)。QLabel を追加する必要がsetSizePolicyあります。QSizePolicy::Maximum

于 2013-05-05T12:47:09.263 に答える