Qt QWidget设置背景图片只显示一半的解决办法

在使用Qt开发应用程序时,我们有时需要为QWidget设置背景图片。但是,有时候会遇到设置的背景图片只显示一半的问题,例如 DraggableWidget::DraggableWidget(const QString& text, QWidget *parent) 构造函数中设置背景图片。

问题原因:

这个问题通常是由于背景图片的大小与 DraggableWidget 的大小不匹配导致的。如果背景图片的大小大于 DraggableWidget,则只有部分图片会被显示出来。

解决办法:

  1. 调整背景图片尺寸: 将背景图片的尺寸调整为与 DraggableWidget 的大小相匹配。
  2. 使用CSS样式:
    • 使用 background-repeat 属性控制背景图片的重复方式,例如 background-repeat: no-repeat; 可以防止背景图片重复显示。
    • 使用 background-position 属性控制背景图片的位置,例如 background-position: center; 可以将背景图片居中显示。

代码示例:

DraggableWidget::DraggableWidget(const QString& text, QWidget *parent)
    : QWidget(parent)
{
    setAcceptDrops(true);
    setFixedSize(40, 40);
    
    // 设置背景颜色、图片、重复方式和位置
    setStyleSheet('background-color: lightred; background-image: url(F:/1007map/testcar.jpg); background-repeat: no-repeat; background-position: center;');

    label = new QLabel(text, this);
    label->setAlignment(Qt::AlignCenter);

    void(DraggableWidget:: *carmovePos)(QPoint carPos) = &DraggableWidget::movePos;
    void(DraggableWidget:: *carmovetoPos)(QPoint carPos) = &DraggableWidget::movetoPos;
    connect(this, carmovePos, this, carmovetoPos);
}

总结:

通过调整背景图片的尺寸或使用CSS样式,可以解决Qt QWidget设置背景图片只显示一半的问题,确保背景图片完整显示。

Qt QWidget设置背景图片只显示一半的解决办法

原文地址: https://www.cveoy.top/t/topic/kRs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录