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));
}
结果:
不是最佳解决方案,因为您应该根据自己的目的对其进行调整,但目前总比没有好。
我可以在 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));
}
结果:
不是最佳解决方案,因为您应该根据自己的目的对其进行调整,但目前总比没有好。