[Qt] Qss对于QWidget不生效,不能绘制背景图片

291 阅读1分钟
    QString qss = R"(
        QWdiget 
        {
            background: url(bg.jpeg);
        }
    )";
    setStyleSheet(qss);

对于上述代码,运行效果并没有显示背景图片。 解决的方法是重写 paintEvent函数。

#include <QStyleOption>
#include <QPainter>
#include <QStyle> 

void Widget::paintEvent(QPaintEvent* event)
{
    QStyleOption op;
    op.initFrom(this);    // 初始化op对象
    QPainter p(this);
    
    /*
        style(): 返回当前部件的样式,在Qt中是由QStyle表示的
        QStyle::PE_Widget: 绘制部件本身
    */
    style()->drawPrimitive(QStyle::PE_Widget, &op, &p, this);
}

这样,背景图片就能绘制出来了