QAbstractSlider
QAbstractSlider
是 Qt 提供的一个抽象基类,用于表示具有滑块功能的输入控件。它允许用户在一个整数区间内选择值,通过滑块的移动实现直观的交互。该类的典型实现包括水平、垂直滑块以及圆形表盘等多种形式。
子类概述
1. QScrollBar
- 描述:滚动条,通常用于显示可滚动内容的当前位置。
- 常见应用:
- 配合
QScrollArea
显示大尺寸文档或图片。 - 在文本编辑器中实现滚动导航。
- 配合
- 关键功能:
- 通过上下按钮、滑块拖动或键盘控制实现精确导航。
- 支持设置单步滚动和页面滚动的步长。
2. QSlider
- 描述:提供直线滑块控件,用于选择一个整数值。
- 常见应用:
- 音量控制。
- 播放进度条。
- 亮度或对比度调节。
- 关键属性:
tickPosition
:设置刻度的位置。tickInterval
:设置刻度之间的间隔。
- 扩展功能:
- 支持水平或垂直方向显示。
- 可通过信号槽机制实时更新值。
3. QDial
- 描述:圆形表盘控件,适合需要旋转输入的场景。
- 常见应用:
- 用于旋钮类控件(如音频设备的调节旋钮)。
- 控制参数范围环绕的设备(如机器人角度调节)。
- 关键属性:
wrapping
:控制首尾是否连接。notchTarget
:设置刻度目标显示间隔。
核心属性
以下为所有 QAbstractSlider
子类的通用属性:
属性名称 | 描述 |
---|---|
invertedAppearance | 反转滑块外观。启用后,滑块位置从默认端反向显示。 |
invertedControls | 反转滑块控制逻辑。启用后,方向键的操作逻辑将反向(如向上变为减小,向下变为增大)。 |
maximum | 滑块允许的最大值。 |
minimum | 滑块允许的最小值。 |
value | 当前滑块值。 |
singleStep | 按方向键调整的步长,默认值为 1。 |
pageStep | 按 PageUp/PageDown 键调整的步长,默认值为 10。 |
orientation | 滑块的方向,可选值为水平 (Qt::Horizontal ) 或垂直 (Qt::Vertical )。 |
tracking | 是否启用实时跟踪模式。拖动滑块时实时发射 valueChanged() 信号,默认值为 true 。 |
sliderPosition | 当前滑块手柄的位置,通常等同于 value 属性。 |
使用示例
以下代码展示了如何在窗口中使用 QScrollBar
、QSlider
和 QDial
并设置其基本属性。
示例代码
#include <QWidget>
#include <QScrollBar>
#include <QSlider>
#include <QDial>
#include <QVBoxLayout>class MyWidget : public QWidget
{Q_OBJECTpublic:MyWidget(QWidget *parent = nullptr): QWidget(parent){QVBoxLayout *layout = new QVBoxLayout(this);// QScrollBar 示例QScrollBar *scrollBar = new QScrollBar(Qt::Horizontal, this);scrollBar->setMinimum(0);scrollBar->setMaximum(100);scrollBar->setPageStep(10);layout->addWidget(scrollBar);// QSlider 示例QSlider *slider = new QSlider(Qt::Vertical, this);slider->setMinimum(0);slider->setMaximum(100);slider->setTickPosition(QSlider::TicksRight);slider->setTickInterval(5);layout->addWidget(slider);// QDial 示例QDial *dial = new QDial(this);dial->setMinimum(0);dial->setMaximum(360);dial->setWrapping(true);layout->addWidget(dial);setLayout(layout);}
};