QT应用编程: QSlider设置滚动块定位到鼠标点击的地方
【摘要】
一、环境介绍
QT版本: 5.12.6
二、 实现方法
在UI界面拖一个horizontalSlider控件,方便测试。
在主界面的类里重载eventFilter函数,拦截鼠标事件。
//主线程class Widget : public QWidget{ Q_OBJECT public: ........
一、环境介绍
QT版本: 5.12.6
二、 实现方法
在UI界面拖一个horizontalSlider控件,方便测试。
在主界面的类里重载eventFilter函数,拦截鼠标事件。
-
//主线程
-
class Widget : public QWidget
-
{
-
Q_OBJECT
-
-
public:
-
....................
-
private slots:
-
....................
-
-
protected:
-
bool eventFilter(QObject *obj, QEvent *event);
-
private:
-
Ui::Widget *ui;
-
};
-
-
-
Widget::Widget(QWidget *parent)
-
: QWidget(parent)
-
, ui(new Ui::Widget)
-
{
-
ui->setupUi(this);
-
ui->horizontalSlider_2->installEventFilter(this);
-
...................略.................................
-
}
-
-
-
bool Widget::eventFilter(QObject *obj, QEvent *event)
-
{
-
//解决QSlider点击不能到鼠标指定位置的问题
-
if(obj==ui->horizontalSlider_2)
-
{
-
if (event->type()==QEvent::MouseButtonPress) //判断类型
-
{
-
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
-
if (mouseEvent->button() == Qt::LeftButton) //判断左键
-
{
-
int value = QStyle::sliderValueFromPosition(ui->horizontalSlider_2->minimum(), ui->horizontalSlider_2->maximum(), mouseEvent->pos().x(), ui->horizontalSlider_2->width());
-
ui->horizontalSlider_2->setValue(value);
-
}
-
}
-
}
-
return QObject::eventFilter(obj,event);
-
}
文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。
原文链接:xiaolong.blog.csdn.net/article/details/110453097
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)