QT应用编程: QSlider设置滚动块定位到鼠标点击的地方

举报
DS小龙哥 发表于 2021/12/10 00:45:59 2021/12/10
【摘要】 一、环境介绍 QT版本:  5.12.6 二、 实现方法 在UI界面拖一个horizontalSlider控件,方便测试。 在主界面的类里重载eventFilter函数,拦截鼠标事件。 //主线程class Widget : public QWidget{ Q_OBJECT public: ........

一、环境介绍

QT版本:  5.12.6

二、 实现方法

在UI界面拖一个horizontalSlider控件,方便测试。

在主界面的类里重载eventFilter函数,拦截鼠标事件。


  
  1. //主线程
  2. class Widget : public QWidget
  3. {
  4. Q_OBJECT
  5. public:
  6. ....................
  7. private slots:
  8. ....................
  9. protected:
  10. bool eventFilter(QObject *obj, QEvent *event);
  11. private:
  12. Ui::Widget *ui;
  13. };
  14. Widget::Widget(QWidget *parent)
  15. : QWidget(parent)
  16. , ui(new Ui::Widget)
  17. {
  18. ui->setupUi(this);
  19. ui->horizontalSlider_2->installEventFilter(this);
  20. ...................略.................................
  21. }
  22. bool Widget::eventFilter(QObject *obj, QEvent *event)
  23. {
  24. //解决QSlider点击不能到鼠标指定位置的问题
  25. if(obj==ui->horizontalSlider_2)
  26. {
  27. if (event->type()==QEvent::MouseButtonPress) //判断类型
  28. {
  29. QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
  30. if (mouseEvent->button() == Qt::LeftButton) //判断左键
  31. {
  32. int value = QStyle::sliderValueFromPosition(ui->horizontalSlider_2->minimum(), ui->horizontalSlider_2->maximum(), mouseEvent->pos().x(), ui->horizontalSlider_2->width());
  33. ui->horizontalSlider_2->setValue(value);
  34. }
  35. }
  36. }
  37. return QObject::eventFilter(obj,event);
  38. }

 

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/110453097

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。