Qt QSlider点击和拖动

终于有时间写点东西了~~自从毕业到现在,才做了不到两个月的工作辞掉了,为了自己的兴趣,在这里鼓励有强烈追求的人勇敢的做自己想做的事,做自己喜欢的工作!

来到一个新公司,老大要求用qt还有opengl做一个yuv播放器,完全没接触过这些,不过经过自己的努力在半个多月还是弄出来了~问题众多,下面就Qt的QSlider遇到的问题来讲讲希望对新手有点帮助!

在Qt中Qslider的单击并不是直接移动到点击的位置,而是每点一次移动一步。这在给播放器的体验效果很差,所以很是有必要自己来实现。但是必须注意到的一个问题是QSlider的拖动,如果处理不好点击和拖动会冲突造成功能失效。处理这个问题可以从QSlider继承过来,重新实现鼠标点击事件,可以重新实现鼠标按下或者释放这个事件来完成这个效果。建议重新实现鼠标左键按下的事件。废话说多了,上代码把:

class SliderClick : public QSlider
{
public:
    SliderClick(QWidget *parent = 0) : QSlider(parent)
    {
    }
protected:
    void mousePressEvent(QMouseEvent *ev)
    {
        //注意应先调用父类的鼠标点击处理事件,这样可以不影响拖动的情况
        QSlider::mousePressEvent(ev);
        //获取鼠标的位置,这里并不能直接从ev中取值(因为如果是拖动的话,鼠标开始点击的位置没有意义了)
        double pos = ev->pos().x() / (double)width();
        setValue(pos * (maximum() - minimum(
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值