Qt 自绘控件--如何在指定位置显示控件

本文档介绍了一个名为WaterProgressBar的自定义控件,该控件继承自QWidget,用于显示带有水波纹效果的进度条。通过使用setGeometry()设置控件的位置和大小,并利用鼠标事件实现拖动调整进度。代码中详细实现了波浪形进度条的绘制,包括波浪的动画效果、数值显示和背景绘制。此外,还提供了鼠标按下、释放和移动事件的处理,使得用户可以通过拖动来改变进度值。

用法:

QWidget的话:setGeometry()
Item的话:setPos()

一般大家用的都是 QWidget,所以这里只对 setGeometry() 解释一下
官方文档对 setGeometry() 的解释是:

在这里插入图片描述

用法其实很简单:

  • x、y 是控件的横纵坐标
  • w、h 是控件的宽和高
#ifndef WATERPROGRESSBAR_H
#define WATERPROGRESSBAR_H

#include <QWidget>

class WaterProgressBar : public QWidget//继承QWidget
{
    Q_OBJECT
public:
    explicit WaterProgressBar(QWidget *parent = nullptr);

    void setVaule(int value);

public slots:
    void updaterWater();//定时更新,让波浪动起来

protected:
    void paintEvent(QPaintEvent *event) override;//自绘控件
    //实现左右拖动改变value
    void mousePressEvent(QMouseEvent *event) override;
    void mouseReleaseEvent(QMouseEvent *event) override;
    void mouseMoveEvent(QMouseEvent *event) override;

private:
    int m_value;
    qreal m_offset;

    bool m_isPressed;
    QPoint m_startPoint;

    void drawWater(QPainter* painter);//画水波浪
    void drawText(QPainter* painter);//画中间数值
    void drawBg(QPainter* painter);//画背景
};

#endif // WATERPROGRESSBAR_H
#include "WaterProgressBar.h"
#include <QPainter>
#include <QtMath>
#include <QTimer>
#include <QMo
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值