首页 > 技术知识 > 正文

Qt背景色修改的三种方式

Qt开发过程中需要对系统控件背景色进行自定义修改,接下来总结一下控件修改背景色的三种方式。

一、使用样式表修改

QLabel Label = new QLabel(this); Label ->setStyleSheet (“background-color: rgb(0,0,0);color: rgb(255,255,255);”); 使用样式表修改背景色比较方便,但是这样会影响子控件。 不影响子控件方法: QLabel Label = new QLabel(this); 设置对象名 if(Label ->objectName().isEmpty()) Label ->setObjectName(“Label”); Label ->setStyleSheet (“QLabel#Label{background-color: rgb(0,0,0);color: rgb(255,255,255);}”);

二、使用QPalette

//获取控件的QPalette QPalette palette = widget->palette(); //设置背景颜色 palette.setColor(QPalette::Window,colorConfig::getColor(2));

//设置文字颜色 palette.setColor(QPalette::WindowText,colorConfig::getColor(11)); //控件背景自动填充 widget->setAutoFillBackground(true); //设置控件调色板 widget->setPalette(palette); 注意: 使用调色板设置控件背景颜色会有一个问题,就是顶级窗口中调色板是无效的。 三、重写绘图事件

继承QWidget类,重写绘图事件:

#ifndef TESTWIDGET_H #define TESTWIDGET_H #include <QWidget> //继承QWidget class testWidget : public QWidget { Q_OBJECT public: explicit testWidget(QWidget *parent = nullptr); protected: virtual void paintEvent( QPaintEvent* event); signals: }; #endif // TESTWIDGET_H #include “testwidget.h” #include <QPainter> testWidget::testWidget(QWidget *parent) : QWidget(parent) { } void testWidget::paintEvent(QPaintEvent *event) { //绘制背景色 QPainter p(this); p.fillRect(this->rect(),QBrush(QColor(255,0,0))); }
<

效果图: Qt背景色修改的三种方式

猜你喜欢