QSlider 的使用技巧

1、使用

对于 QSlider ,很常用的使用就是,实现 void valueChanged(int value) 的槽,从而实现修改滑块值的响应。

但是信号 void valueChanged(int value) 在移动滑块过程中是连续触发的,我们常常需要的结果是滑动到目的点再处理,

使用 void setTracking(bool enable) 接口开启或关闭滑动跟踪,通过设置 setTracking(false) 使信号 void valueChanged(int value) 在滑动过程中不被触发。

2、重写 mousePressEvent 实现滑块点哪去哪

正常情况下,点击 QSlider 滑块,只是以步进减少或增加,不能一步到位,需要实现 mousePressEvent 的重写实现。

代码

void MySlider::mousePressEvent(QMouseEvent *ev)
{
    // 获取当前点击位置,得到的这个鼠标坐标是相对于当前QSlider的坐标
    int currentX = ev->pos().x();
    // 获取当前点击的位置占整个Slider的百分比
    double per = currentX *1.0 /this->width();
    // 利用算得的百分比得到具体数字
    int value = per*(this->maximum() - this->minimum()) + this->minimum();
    qDebug() << value;
    // 设定滑动条位置
    this->setValue(value);
    // 滑动条移动事件等事件也用到了mousePressEvent,加这句话是为了不对其产生影响,是的Slider能正常相应其他鼠标事件
    QSlider::mousePressEvent(ev);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值