QSlider 类使用教程

本文详细介绍了QT库中的QSlider控件,包括其功能、属性如tickInterval、tickPosition、maximum、minimum等的使用方法,以及valueChanged、sliderPressed等信号的触发。还展示了如何设置滑块的样式以自定义外观。
摘要由CSDN通过智能技术生成

QT 官方文档参考地址:https://doc.qt.io/qt-5/qslider.html

1、简介

QSlider垂直或水平滑块条控件,最常见的应用就是视频播放器中的进度条
QSlider允许用户通过鼠标进行拖动、点击

QSlider只有很少的自己的功能;大部分功能都在QAbstractSlider中。最有用的函数是setValue(),它直接将滑块设置为某个值;triggerAction()模拟点击的效果(对于快捷键很有用);setSingleStep(), setPageStep()设置步长;以及setMinimum()setMaximum()来定义滚动条的范围。

在这里插入图片描述
在这里插入图片描述

2 、公共类型

1、 enum TickPosition
此枚举指定相对于滑块的凹槽和用户移动的手柄要绘制的刻度标记的位置

  • NoTicks:不要画任何标记。
  • TicksBothSides在槽的两边画刻度
  • TicksAbove在(水平)滑块上方画刻度
  • TicksBelow在(水平)滑块下方绘制刻度标记
  • TicksLeft在(垂直)滑块的左侧绘制刻度
  • TicksRight在(垂直)滑块的右侧绘制刻度

在这里插入图片描述

3、属性

1、tickInterval(类型:int

此属性保存标记之间的间隔
这是一个值间隔,而不是像素间隔。如果为0,滑块将在singleStep和pageStep之间进行选择。
缺省值为0。

2、tickPosition(类型:TickPosition

此属性保存此滑块的刻度位置
有效值由QSlider::TickPosition enum描述
默认值为QSlider:: noks

3、maximum(类型:int

这个属性保存滑块的最大值,即 右 / 上 边界值
设置此属性时,必要时将调整最小值,以确保范围保持有效。
同时,滑块的当前值被调整到新的范围内。

4、minimum (类型:int

这个属性保存滑块的最小值,即 左 / 下 边界值
设置此属性时,将根据需要调整最大值,以确保范围保持有效。
同时,滑块的当前值被调整到新的范围内。

5、value (类型:int

这个属性保存滑块的当前值
滑块强制值在合法范围内:minimum <= value <= maximum。
改变这个值也会改变sliderPosition。

4、functions

4.1、访问属性相关 function

1、int tickInterval() const

获取标记之间的间隔

2、void setTickInterval(int ti)

设置标记之间的间隔

在这里插入图片描述

3、QSlider::TickPosition tickPosition() const

获取此滑块的刻度属性

4、void setTickPosition(QSlider::TickPosition position)

设置此滑块是否显示刻度以及刻度位置
刻度位置参考 enum TickPosition

5、int maximum() const

获取滑条的 右 / 上 边界值

6、void setMaximum(int)

设置滑条的 右 / 上 边界值

7、int minimum() const

获取滑条的 左 / 下 边界值

8、void setMinimum(int)

设置滑条的 左 / 下 边界值

在这里插入图片描述

9、int value() const

获取滑条当前位置

10、void setValue(int)

设置滑条当前位置

4.2、公共槽

pass

4.3、Signal

1、void valueChanged(int value)

当滑动条值改变时,这个信号被发出,新的滑动条值作为参数。
拖着未释放滑块时,只要值改变就一直发射此信号

2、void sliderPressed()

这个信号在用户用鼠标按下滑块时发出,或者在调用setSliderDown(true)时以编程方式发出。

3、void sliderMoved(int value)

当sliderDown为true并且滑块移动时,会发出这个信号。
这通常发生在用户拖动滑块的时候。该值是新的滑块位置。
即使在关闭跟踪时也会发出该信号。

4、void sliderReleased()

当用户用鼠标释放滑块时,或者当调用setSliderDown(false)时,以编程方式发出该信号。

4.4、其他方法

5、设置样式

选中滑条 ,右键然后点击 “改变样式表”
在这里插入图片描述
添加 QSS 代码
在这里插入图片描述
预览效果
在这里插入图片描述
在这里插入图片描述

QSS 代码

QSlider::groove:horizontal {
border: 1px solid #bbb;
background: white;
height: 10px;
border-radius: 4px;
}

QSlider::sub-page:horizontal {
background: qlineargradient(x1: 0, y1: 0.2, x2: 1, y2: 1,
    stop: 0 #bbf, stop: 1 #55f);
border: 1px solid #777;
height: 10px;
border-radius: 4px;
}

QSlider::add-page:horizontal {
background: #fff;
border: 1px solid #777;
height: 10px;
border-radius: 4px;
}

QSlider::handle:horizontal {
background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
    stop:0 #eee, stop:1 #ccc);
border: 1px solid #777;
width: 13px;
margin-top: -2px;
margin-bottom: -2px;
border-radius: 4px;
}

QSlider::handle:horizontal:hover {
background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
    stop:0 #fff, stop:1 #ddd);
border: 1px solid #444;
border-radius: 4px;
}

QSlider::sub-page:horizontal:disabled {
background: #bbb;
border-color: #999;
}

QSlider::add-page:horizontal:disabled {
background: #eee;
border-color: #999;
}

QSlider::handle:horizontal:disabled {
background: #eee;
border: 1px solid #aaa;
border-radius: 4px;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 `installEventFilter` 来为 `QSlider` 安装事件过滤器,可以捕获和处理滑块控件的事件。通过事件过滤器,你可以拦截并处理滑块控件的各种事件,例如鼠标点击、滑动等。 下面是一个示例代码,展示如何使用事件过滤器来监听 `QSlider` 的鼠标点击事件: ```cpp #include <QSlider> #include <QEvent> #include <QDebug> class SliderEventFilter : public QObject { Q_OBJECT public: explicit SliderEventFilter(QObject *parent = nullptr) : QObject(parent) {} protected: bool eventFilter(QObject *obj, QEvent *event) override { if (event->type() == QEvent::MouseButtonPress) { QSlider *slider = qobject_cast<QSlider*>(obj); if (slider) { qDebug() << "Slider clicked!"; // 在这里处理滑块点击事件的逻辑 return true; } } return QObject::eventFilter(obj, event); } }; ``` 在上面的示例中,我们创建了一个继承自 `QObject` 的事件过滤器 `SliderEventFilter`。在 `eventFilter` 方法中,我们首先判断接收到的事件型是否为鼠标按下事件(`QEvent::MouseButtonPress`),然后使用 `qobject_cast` 将对象转换为 `QSlider` 型。如果转换成功,说明事件发生在 `QSlider` 上,我们在这里可以处理滑块点击事件的逻辑。 为了使用事件过滤器,你需要在你的代码中安装它: ```cpp QSlider *slider = new QSlider(parent); SliderEventFilter *eventFilter = new SliderEventFilter(slider); slider->installEventFilter(eventFilter); ``` 通过以上步骤,你可以成功使用事件过滤器来监听和处理 `QSlider` 的鼠标点击事件。你可以根据需要在 `eventFilter` 方法中处理其他型的事件,以实现自定义的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值