QLabel边框不会显示pixmap

时间:2015-05-04 14:44:52

标签: c++ qt qlabel

我可以在我的QLabels上显示边框:

enter image description here

但是当我尝试在其中显示像素图时,边框消失了:

enter image description here

我在QLabel子类的构造函数中设置了框架属性:

ObjectSlot::ObjectSlot(int index) {
    setIndex(index);

    setFrameShape(QFrame::StyledPanel);
    setFrameShadow(QFrame::Raised);
    setLineWidth(3); 
    setMidLineWidth(3);

    setAlignment(Qt::AlignCenter);
    return;
}

pixmap在paintEvent

中设置
void ObjectSlot::paintEvent(QPaintEvent* event) {
    QPixmap* image = new QPixmap("://images/Box.png");
    setPixmap(image->scaled(width(),height(),Qt::KeepAspectRatio));
    QLabel::paintEvent(event);
}

为什么边界会消失?为什么生活如此残酷?

1 个答案:

答案 0 :(得分:2)

正如医生所说:

  

设置像素图会清除以前的所有内容。好友的快捷方式,如果   任何,被禁用。

所以看起来这是不可能的,但是我找到了下一个解决方案,你不应该setPixmap(),当你绘制所有正确的标签时,你只需要drawPixmap()

void ObjectSlot::paintEvent(QPaintEvent *e)
{
    QLabel::paintEvent(e);
    //label painted
    QPainter p(this);
    QPixmap image("G:/2/qt.png");
    p.drawPixmap(QPoint(1,1),image.scaled(100,100,Qt::KeepAspectRatio));
}

结果:

enter image description here

不是最好的解决方案,因为你应该根据自己的目的调整它,但目前总比没有好。