QLabel 边框不会显示像素图

QLabel border won't display with pixmap

我可以在 QLabels 上显示一个边框就好了:

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

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

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

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

    setAlignment(Qt::AlignCenter);
    return;
}

像素图设置在paintEvent:

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

为什么边框消失了?为什么生活如此残酷?

正如医生所说:

Setting the pixmap clears any previous content. The buddy shortcut, if any, is disabled.

所以这似乎是不可能的,但我找到了下一个解决方案,你不应该 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));
}

结果:

不是最佳解决方案,因为您应该根据自己的目的对其进行调整,但目前总比没有好。