作者: Jintao
日期:2021-9-14
简介: QT学习之路 2 ——Qt “涂鸦师” 之 QPainter painter(this);
Qt “涂鸦师” (QPainter ) 是专门用来负责在Qt界面上的图形&图片的添加的。
- Qt “涂鸦师” 之 神笔(QPen)
QPen pen1(Qt::green); // 使用Qt自带的设置笔的颜色
QPen pen(QColor(255,0,0)); // 使用RGB来设置笔的颜色
pen1.setWidth(4); // 笔宽度
painter.setPen(pen1); // 让Qt "涂鸦师" 使用该笔
-
Qt 自带颜色选取
-
以下code输出图示例
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
// 设置笔的颜色
QPen pen1(Qt::green);
pen1.setWidth(4);
painter.setPen(pen1);
painter.drawLine(QPoint(0,0), QPoint(100,100));
painter.drawText(QRect(10, 200,100,50), "风水轮流转");
// 设置笔的颜色
QPen pen2(QColor(255,0,0));
pen2.setWidth(2);
painter.setPen(pen2);
painter.drawLine(QPoint(100,100), QPoint(200,0));
painter.drawText(QRect(150, 200,100,50), "风水轮流转");
painter.end(); // Qt "涂鸦师" 休息
}
-
神笔(QPen) 的样式多样性
-
使用Qt神笔演示效果
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
// 设置笔的颜色
QPen pen1(Qt::green);
pen1.setWidth(4);
// 设置笔的样式
pen1.setStyle(Qt::DashLine);
painter.setPen(pen1);
painter.drawLine(QPoint(0,0), QPoint(100,100));
painter.drawText(QRect(10, 200,100,50), "风水轮流转");
// 设置笔的颜色
QPen pen2(QColor(255,0,0));
pen2.setWidth(2);
painter.setPen(pen2);
painter.drawLine(QPoint(100,100), QPoint(200,0));
painter.drawText(QRect(150, 200,100,50), "风水轮流转");
painter.end(); // Qt "涂鸦师" 休息
}
- Qt “涂鸦师” 之 神刷子(QBrush)
QBrush brush(Qt::green); // 创建"神刷子,并赋予刷子的颜色
painter.setBrush(brush); // 让Qt "涂鸦师" 使用该神刷子
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QBrush brush1(Qt::green);
painter.setBrush(brush1);
painter.drawEllipse(QRectF(300.0, 20.0, 80.0, 60.0)); //(左上角的 X 坐标,左上角的 Y 坐标,椭圆的边框的宽度,椭圆的边框的高度)
painter.drawEllipse(QPoint(200,80), 40,30); // (圆心)x半径,y半径
QBrush brush2(Qt::gray);
painter.setBrush(brush2);
painter.end();
}
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QBrush brush1(Qt::green);
brush1.setStyle(Qt::BDiagPattern); // 添加画刷样式
painter.setBrush(brush1);
painter.drawEllipse(QRectF(300.0, 20.0, 80.0, 60.0)); //(左上角的 X 坐标,左上角的 Y 坐标,椭圆的边框的宽度,椭圆的边框的高度)
painter.drawEllipse(QPoint(200,80), 40,30); // (圆心)x半径,y半径
QBrush brush2(Qt::gray);
painter.setBrush(brush2);
painter.end();
}