使用QPainte 将修改画笔样式,并用 drawLine 和 drawLines 绘制线段
这里沿用了 QT基础:QPainte 绘制文本并设置动态设置字体演示 中的代码
1、打开QT创建 widget 项目
2、代码演示
以下代码均为 widget.cpp 中的代码,头文件需要声明 void paintEvent(QPaintEvent * ev)
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QDebug>
#include <QLine>
#include <QVector>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent * ev)
{
// 创建一个绘制对象,设置绘制设备(widget)
QPainter p(this);
// p.begin(this);
// 设置画笔颜色
p.setPen(QColor(255,0,0,100));
// 设置字体
// p.setFont(QFont(("黑体"),20)); // 手动设置字体
// ui上画一个字体选择控件,将这个控件的字体获取到
QFont f = ui->fontComboBox->currentFont(); // 创建一个字体对象,获取到UI中的字体选择控件
f.setPixelSize(30); // 给字体对象设置大小
p.setFont(f); // 将字体对象传入绘制控件
// 绘制 text x,y,文本
p.drawText(50,100,"QT基础 绘制文本");
// 链接信号槽,将ui中的字体选择控件的改变索引信号,链接到weiget的 update 槽函数
// 相当于字体选择控件发生改变后,widget 就刷新一下
QObject::connect(ui->fontComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(update()));
// 创建一个画笔
QPen pen;
// 设置画笔样式为 实线
pen.setStyle(Qt::SolidLine);
// 设置画笔的宽度
pen.setWidth(20);
// 给画笔设置颜色
pen.setBrush(Qt::red);
// 设置结尾端样式 线的两端为圆形
pen.setCapStyle(Qt::RoundCap);
// 设置连接处样式(两条线的连接处) 圆形连接
pen.setJoinStyle(Qt::RoundJoin);
// 创建一个图片画笔
// pen.setBrush(QBrush(QImage(
// "C:/Users/patient/Pictures/Saved Pictures/喜欢篮球.png")));
// 将画笔写入绘制对象中
p.setPen(pen);
// 开始绘制线段
p.drawLine(QLine(0,220,300,220));
p.drawLine(QLine(300,220,300,20));
p.drawLine(QLine(300,20,0,20));
// 通过 QVector 存储线段,进行绘制
QVector<QLine> lines;
lines.push_back(QLine(0,250,100,250));
lines.push_back(QLine(100,250,100,280));
lines.push_back(QLine(100,280,0,280));
// 将画笔改成蓝色
pen.setBrush(Qt::blue);
// 将画笔改成图片
// pen.setBrush(QBrush(QImage(
// "C:/Users/patient/Pictures/Saved Pictures/小黄鸡IKUN篮球.jpg")));
p.setPen(pen);
// 开始绘制线段, 注意这里用的是 drawLines
p.drawLines(lines);
}
3、演示效果
4、注意事项
以上代演示中,绘制线段的时候,用 p.drawLine(QLine(0,220,300,220));
使用 QVector 存储线段以后,再绘制的话,用 p.drawLines(lines);