1. 程式人生 > >Qt:關於自定義widget顯示不出背景顏色的問題

Qt:關於自定義widget顯示不出背景顏色的問題

重寫paintEvent

新增標頭檔案:

#include <QPaintEvent>
#include <QStyleOption>
#include <QPainter>

在.h檔案中:public下

void paintEvent(QPaintEvent *e);

在.cpp檔案中

void RightWidget::paintEvent(QPaintEvent *e){
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}

①再對該自定義widget的樣式表進行設定:

this->setStyleSheet("background: papayawhip;");

②或者直接在重寫paintEvent時,利用筆刷等新增顏色

void RightWidget::paintEvent(QPaintEvent *e){
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
    QPainterPath path;
    path.addRect(0, 0, 600, 500);
    p.setRenderHint(QPainter::Antialiasing);
    p.fillPath(path, QBrush(Qt::yellow));
    p.setPen(Qt::NoPen);
    p.setBrush(Qt::yellow);
    p.drawRect(rect());
}

此時需新增標頭檔案

#include <QPainterPath>