1.添加头文件

#include <QWidget>
#include <QPainter>
#include <QFont>
#include <QBrush>
#include <QColor>
#include <QPaintDevice>
#include <QPaintEngine>
#include <QPixmap>
#include <QPainterPath>
#include <QDebug>
#include <QLCDNumber>
#include <QRect>
#include <QRectF>
#include <QPoint>
#include <QPointF>
#include <QLabel>

2.添加.h代码,必须添加paintEvent事件,在protected中

protected:
    void paintEvent(QPaintEvent *event);

3.添加.cpp代码,绘画事件必须在paintEvent事件中进行

void QDashboard::paintEvent(QPaintEvent *event)
{
    //text
//    QPainter painter(this);

//    //设置画笔颜色
//    painter.setPen(QColor(0,160,230));
//    //设置字体 微软 点大小50 斜体
//    QFont font;

//    font.setFamily("Microsoft YaHei");
//    font.setPointSize(50);
//    font.setItalic(true);
//    painter.setFont(font);

//    painter.drawText(rect(),Qt::AlignCenter,"Qt");


//    //画直线
//    Q_UNUSED(event);

//    QPainter painter(this);
//    // 反走样
//    painter.setRenderHint(QPainter::Antialiasing, true);
//    // 设置画笔颜色
//    painter.setPen(QColor(0, 160, 230));
//    // 绘制直线
//    painter.drawLine(QPointF(0, height()), QPointF(width() / 2, height() / 2));


//    //画矩形
//    Q_UNUSED(event);

//    QPainter painter(this);

//    // 反走样
//    painter.setRenderHint(QPainter::Antialiasing, true);
//    // 设置画笔颜色、宽度
//    painter.setPen(QPen(QColor(0, 160, 230), 2));
//    // 设置画刷颜色
//    painter.setBrush(QColor(255, 160, 90));
//    painter.drawRect(50, 50, 160, 100);


//    //绘制弧线
//    Q_UNUSED(event);

//    // 矩形
//    QRectF rect(90.0, 90.0, 80.0, 90.0);
//    // 起始角度
//    int startAngle = 30 * 16;
//    // 跨越度数
//    int spanAngle = 120 * 16;

//    QPainter painter(this);
//    painter.translate(50,50);
//    painter.rotate(5);
//    // 反走样
//    painter.setRenderHint(QPainter::Antialiasing, true);

//    // 设置画笔颜色、宽度
//    painter.setPen(QPen(QColor(0, 160, 230), 2));

//    // 绘制弧线
//    painter.drawArc(rect, startAngle, spanAngle);
//    painter.drawChord(rect,startAngle,spanAngle);
//    painter.drawPie(rect,startAngle,spanAngle);







//    //绘制椭圆
//    Q_UNUSED(event);

//    QPainter painter(this);

//    // 反走样
//    painter.setRenderHint(QPainter::Antialiasing, true);

//    // 设置画笔颜色、宽度
//    painter.setPen(QPen(QColor(0, 160, 230), 2));

//    // 绘制椭圆
//    painter.drawEllipse(QPointF(120, 60), 50, 20);

//    // 设置画刷颜色
//    painter.setBrush(QColor(255, 160, 90));

//    // 绘制圆
//    painter.drawEllipse(QPointF(120, 140), 40, 40);


//    //绘制多边形
//    Q_UNUSED(event);

//    QPainter painter(this);

//    // 反走样
//    painter.setRenderHint(QPainter::Antialiasing, true);

//    // 设置画笔颜色
//    painter.setPen(QColor(0, 160, 230));

//    // 各个点的坐标
//    static const QPointF points[4] = {QPointF(30, 40), QPointF(60, 150), QPointF(150, 160), QPointF(220, 100)};

//    // 绘制多边形
//    painter.drawPolygon(points, 4);


//    //绘制路线
//    Q_UNUSED(event);

//    QPainter painter(this);

//    // 反走样
//    painter.setRenderHint(QPainter::Antialiasing, true);

//    painter.setBrush(QColor(168, 195, 73));
//    QPainterPath path;
//    path.moveTo(20,80);

//    path.lineTo(20,30);

//    path.cubicTo(80,0,50,50,80,80);
//    path.closeSubpath();
//    painter.drawPath(path);
//    painter.setPen(QPen(QColor(0, 160, 230), 5));
//    painter.drawPoint(20,80);
//    painter.drawPoint(20,30);
//    painter.drawPoint(50,50);
//    painter.drawPoint(80,0);
//    painter.drawPoint(80,80);







//    //绘制图片
//    Q_UNUSED(event);

//    QPainter painter(this);

//    // 反走样
//    painter.setRenderHint(QPainter::Antialiasing, true);

//    // 绘制图标
//    painter.drawPixmap(rect(), QPixmap("://C:/Users/Administrator/Desktop/zfb.jpg"));



//    //绘制自定义线路
//    Q_UNUSED(event);

//    QPainter painter(this);

//    // 反走样
//    painter.setRenderHint(QPainter::Antialiasing, true);

//    painter.setBrush(QColor(168, 195, 73));
//    QPainterPath path;
//    path.moveTo(20,80);

//    path.lineTo(20,30);

//    path.cubicTo(80,0,50,50,80,80);
//    path.quadTo(20,20,60,60);
//    path.closeSubpath();
//    painter.drawPath(path);
//    painter.setPen(QPen(QColor(0, 160, 230), 5));
//    painter.drawPoint(20,80);
//    painter.drawPoint(20,30);
//    painter.drawPoint(50,50);
//    painter.drawPoint(80,0);
//    painter.drawPoint(80,80);


//    // 曲线上的点
//    static QList<QPointF> points = QList<QPointF>() << QPointF(0, 0) << QPointF(100, 100) << QPointF(200, -100)
//                                                    << QPointF(300, 100) << QPointF(330, -80) << QPointF(350, -70);
//    QPainterPath path(points[0]);
//    //计算
//    for (int i = 0; i < points.size() - 1; ++i) {
//        // 控制点的 x 坐标为 sp 与 ep 的 x 坐标和的一半
//        // 第一个控制点 c1 的 y 坐标为起始点 sp 的 y 坐标
//        // 第二个控制点 c2 的 y 坐标为结束点 ep 的 y 坐标
//        QPointF sp = points[i];
//        QPointF ep = points[i+1];
//        QPointF c1 = QPointF((sp.x() + ep.x()) / 2, sp.y());
//        QPointF c2 = QPointF((sp.x() + ep.x()) / 2, ep.y());
//        path.cubicTo(c1, c2, ep);
//    }
//    QPainter painter(this);
//    //设置渲染提示为消除锯齿
//    painter.setRenderHint(QPainter::Antialiasing, true);
//    //设置画笔颜色和宽度
//    painter.setPen(QPen(Qt::black, 2));
//    //将坐标系转换为矢量
//    painter.translate(40, 130);
//    //绘制path
//    painter.drawPath(path);
//    // 绘制曲线上的点
//    painter.setBrush(Qt::gray);
//    //绘制曲线上的点
//    for (int i = 0; i < points.size(); ++i) {
//        painter.drawEllipse(points[i], 4, 4);
//    }


    Q_UNUSED(event);

//    init_circle();
//    change_color(color_bad,400,300);
//    change_rate("bad");
//    lcd->display(300);
    change_dashboard(max_num,cur_num,good_num,medium_num,bad_num);
//    QPainter painter(this);
//    static QList<QPointF> points = QList<QPointF>() << point_base;

//    //圆心
//    painter.drawEllipse(points[0],4,4);






}

 

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐