当前位置: 代码迷 >> QT开发 >> Qt图片显示有关问题
  详细解决方案

Qt图片显示有关问题

热度:251   发布时间:2016-04-25 03:01:11.0
Qt图片显示问题
我的类继承自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()可以直接加载图片
------解决思路----------------------
引用:
paint中使用QPainter painter(label1),我的意思是希望图片在label中显示,但是这样显示不出来

要在QLabel中绘制,你必须派生QLabel并实现其 paintEvent 而不是QDialog的 paintEvent
  相关解决方案