Qt自绘之自由移动的折线

一、简述

今天介绍一下可以用鼠标拖拽的折线图,顾名思义,就是可以通过鼠标来添加和移动折线图上每个顶点,见下图效果。


鼠标自由点击进行添加点

在这里插入图片描述

鼠标自由移动顶点

在这里插入图片描述

菜单操作

在这里插入图片描述

丰富的颜色设置

在这里插入图片描述

与时间轴结合

在这里插入图片描述

二、代码介绍

实现就是通过Qt的QPainter来绘制的,主要是通过鼠标的mousePressEvent、mouseMoveEvent、mouseReleaseEvent事件进行相应操作的处理。每次鼠标点击记录一个点, 将点插入到对于的点队列中,然后再重新绘制即可,顶点移动则是判断当前鼠标是否再顶点圆圈范围内,可通过鼠标不同的样式判断当前鼠标是否在顶点中。

在鼠标的事件中进行相应折现的信息记录,然后进行绘制。绘制分为两个部分,线的绘制和顶点的绘制,这两个部分分开进行绘制。可自定义设置颜色。

在这里插入图片描述

QT自绘progress是指在QT框架下,通过自定义绘的方式实现进度条的效果。通过自绘可以实现更加个性化的进度条样式,满足不同的设计需求。 在QT中,可以通过继承QWidget或QProgressBar类来实现自绘progress。具体步骤如下: 1. 创建一个新的类,继承自QWidget或QProgressBar。 2. 重写paintEvent函数,在该函数中进行绘制操作。 3. 在paintEvent函数中,可以使用QPainter类进行绘制,例如绘制背景、进度条等。 4. 根据需要,可以使用QStyleOptionProgressBar类获取进度条的相关信息,例如当前值、最小值、最大值等。 5. 在绘制完成后,调用update函数进行界面刷新。 下面是一个简单的示例代码: ```cpp class CustomProgressBar : public QProgressBar { public: CustomProgressBar(QWidget *parent = nullptr) : QProgressBar(parent) {} protected: void paintEvent(QPaintEvent *event) override { Q_UNUSED(event); QPainter painter(this); QStyleOptionProgressBar option; initStyleOption(&option); // 绘制背景 painter.fillRect(rect(), Qt::gray); // 绘制进度条 option.rect.setWidth(rect().width() * value() / maximum()); option.text = QString("%1%").arg(value() * 100 / maximum()); option.textVisible = true; style()->drawControl(QStyle::CE_ProgressBar, &option, &painter, this); } }; ``` 使用该自定义进度条类时,只需要将其实例化并添加到布局中即可: ```cpp CustomProgressBar *progressBar = new CustomProgressBar; layout->addWidget(progressBar); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值