Qt:關於自定義widget顯示不出背景顏色的問題
阿新 • • 發佈:2019-02-13
重寫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>