qt QBrush详解
1、概述
QBrush是Qt框架中的一个基本图形对象类,它主要用于定义图形的填充模式。QBrush可以用于填充如矩形、椭圆形、多边形等形状,也可以用于绘制背景等。通过QBrush,可以设置填充的颜色、样式(如实心、渐变、纹理等)、以及渐变的具体参数(如渐变方向、颜色分布等)。QBrush的使用极大地丰富了Qt图形界面的视觉效果。
2、重要方法
QBrush类提供了一系列重要的方法来设置和获取其属性,以下是一些关键的方法:
- setColor(const QColor &color):设置QBrush的填充颜色。颜色可以是Qt预定义的颜色常量,也可以是任意QColor对象。
- color() const:获取QBrush当前的填充颜色。
- setStyle(Qt::BrushStyle style):设置QBrush的填充样式。Qt::BrushStyle是一个枚举类型,包括实心、斜线、网格等多种样式。
- style() const:获取QBrush当前的填充样式。
- setGradient(const QGradient &gradient):设置QBrush的渐变填充。渐变可以是线性渐变、锥形渐变或径向渐变。
- gradient() const:获取QBrush当前的渐变填充。
- setTexture(const QPixmap &pixmap):设置QBrush的纹理填充。纹理可以是任何QPixmap对象。
- texture() const:获取QBrush当前的纹理填充。
3、重要属性
- Qt::NoBrush:无画刷。
- Qt::SolidPattern:纯色填充。
- Qt::DenselPattern 到 Qt::Dense7Pattern:不同密度的点阵填充。
- Qt::HorPattern:水平线填充。
- Qt::VerPattern:垂直线填充:
- Qt::CrossPattern:交叉线填充。
- Qt::BDiagPattern:45度左斜线填充。
- Qt::FDiagPattern:45度右斜线填充,
- Qt::DiagCrossPattern:交叉斜线填充。
- Qt::LinearGradientPattern:线性渐变填充。
- Qt::RadialGradientPattern:径向渐变填充。
- 0t::ConicalGradientPattern:锥形渐变填充。
- Qt::TexturePattern:纹理图像填充。
#include <QApplication>
#include <QMainWindow>
#include <QWidget>
#include <QPainter>
class BrushDemoWidget : public QWidget
{
protected:
void paintEvent(QPaintEvent *event) override
{
Q_UNUSED(event);
QPainter painter(this);
// 设置纯色画刷
QBrush solidBrush(Qt::blue);
painter.setBrush(solidBrush);
painter.drawRect(10, 10, 100, 100);
// 设置线性渐变画刷
QLinearGradient linearGradient(200, 10, 300, 110);
linearGradient.setColorAt(0, Qt::red);
linearGradient.setColorAt(1, Qt::yellow);
QBrush linearGradientBrush(linearGradient);
painter.setBrush(linearGradientBrush);
painter.drawRect(200, 10, 100, 100);
// 设置图案画刷
QBrush patternBrush(Qt::BDiagPattern);
patternBrush.setColor(Qt::green);
painter.setBrush(patternBrush);
painter.drawRect(10, 150, 100, 100);
// 设置纹理画刷
QPixmap texturePixmap(":/images/texture.jpg");
QBrush textureBrush(texturePixmap);
painter.setBrush(textureBrush);
painter.drawRect(200, 150, 100, 100);
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建主窗口
QMainWindow mainWindow;
mainWindow.setWindowTitle("QBrush Example");
mainWindow.resize(400, 300);
// 创建自定义绘图控件
BrushDemoWidget *brushDemoWidget = new BrushDemoWidget;
mainWindow.setCentralWidget(brushDemoWidget);
// 显示主窗口
mainWindow.show();
return app.exec();
}
觉得有帮助的话,打赏一下呗。。