QT基础:QPainte 绘制线段,并修改画笔为图片演示

使用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);

猜你喜欢

转载自blog.csdn.net/qq_39085747/article/details/129642977