Qt背景色修改的三种方式
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)));
}
效果图:
- 分享
- 举报
-
浏览量:13008次2021-02-20 17:52:54
-
浏览量:634次2023-08-22 13:38:20
-
浏览量:1994次2019-11-28 18:23:26
-
浏览量:7965次2020-11-24 23:06:59
-
浏览量:5534次2021-02-09 14:27:57
-
浏览量:5259次2019-11-09 09:37:38
-
浏览量:4599次2020-12-22 11:08:31
-
浏览量:22852次2021-03-15 15:40:13
-
浏览量:1783次2024-01-02 16:35:00
-
浏览量:5156次2020-12-19 17:48:05
-
浏览量:2463次2022-12-08 23:43:55
-
浏览量:13900次2021-03-24 16:14:07
-
浏览量:3069次2017-11-28 12:33:29
-
浏览量:5108次2020-09-20 21:34:22
-
浏览量:4352次2020-11-09 15:33:37
-
浏览量:4180次2021-03-31 22:12:12
-
浏览量:7613次2020-11-16 15:46:54
-
浏览量:7898次2020-12-02 13:40:00
-
浏览量:2687次2017-12-03 14:42:30
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
小王子🤴
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明