Qt 通过 QPainter 绘制坐标轴

一、概述

在自定义贝塞尔曲线中想绘制一个坐标轴。

二、步骤

2.1 新建一个类 PaintAxis 继承 QWidget

然后在界面上拖拽一个 widget,右键 widget 提升为 PaintAxis 。

2.2 重写 paintEvent 函数

  1. 绘制 x,y 轴线
  2. 绘制坐标刻度
  3. 绘制坐标值

三、代码

3.1 .h 文件

#ifndef PAINTAXIS_H
#define PAINTAXIS_H

#include <QWidget>
#include <QPainter>
#include <QDebug>

// @class 绘制坐标轴
// ----------------------------
class PaintAxis: public QWidget
{
   
   
public:
    PaintAxis(QWidget *parent);

    virtual void paintEvent(QPaintEvent *event);

    /// @brief 设置为数学坐标系
    void SetMathCoordinate(QPainter* painter);

    /// @brief 恢复默认坐标系
    void ResetDefaultCoordinate(QPainter* painter);

    /// @brief 绘制坐标刻度
    void PaintCoordinateCalibration(QPainter* painter);

    /// @brief 绘制坐标值
    void PaintCoordinateValue(QPainter* painter);

    /// @brief 绘制两条坐标轴直线
    void PaintCoordinateAxis(QPainter* painter);

private:
    QPoint m_ptStartPos; // 起始点
    int m_axisWidth;    // 坐标轴的宽度
    int m_axisHeight;   // 坐标轴的高度
};

#endif // PAINTAXIS_H

3.2 cpp 文件

#include "paintaxis.h"

const int GRAPH_SCALE = 2;                // 图的放大倍数
const int COORDINATE_CALIBRATION_LENGTH = 4;    // 坐标刻度的长度

// ----------------------------------------------------
PaintAxis::PaintAxis(QWidget *parent) : QWidget(parent)
{
   
   
    m_ptStartPos.setX(30)
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值