我的类继承自QDialog,然后我想在这上面添加几个Qlabel,并在label上面显示图片,
label6 = new QLabel(this);
label6->resize(100,100);
QHBoxLayout *topLayout = new QHBoxLayout;
topLayout->addWidget(label1);
topLayout->addWidget(label2);
topLayout->addWidget(label3);
QHBoxLayout *middleLayout1 = new QHBoxLayout;
middleLayout1->addWidget(label4);
middleLayout1->addWidget(label5);
middleLayout1->addWidget(label6);
QHBoxLayout *bottomLayout = new QHBoxLayout;
bottomLayout->addWidget(addgearbutton);
bottomLayout->addWidget(closebutton);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(topLayout);
mainLayout->addLayout(middleLayout1);
mainLayout->addLayout(bottomLayout);
setLayout(mainLayout);
setWindowTitle(tr("Add gears"));
setFixedSize(800,800);
上面这是布局,然后再painterEvent中是这样的
void GearWidget::paintEvent(QPaintEvent *)
{
QPainter painter(label1);
QString fileName;
fileName = QLatin1String("E:/tiled/soul2.png");
painter.drawImage(0,0,QImage(fileName),0,0,400,200);
}
这里如果QPainter painter(label1);改成QPainter painter(this);是可以显示出来的,对了,上面的布局中也不知道label有没有添加成功,两个按钮是显示出来了
------解决思路----------------------
1、可以在label中加点字就知道是否显示了
2、QLabel::setPixmap()可以直接加载图片
------解决思路----------------------
要在QLabel中绘制,你必须派生QLabel并实现其 paintEvent 而不是QDialog的 paintEvent