本页内容

QDial Class

QDial 类提供了一个带圆角的范围控件(如速度表或电位计)。更多内容...

头文件: #include <QDial>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QAbstractSlider

属性

公共函数

QDial(QWidget *parent = nullptr)
virtual ~QDial()
int notchSize() const
qreal notchTarget() const
bool notchesVisible() const
void setNotchTarget(double target)
bool wrapping() const

重新实现的公共函数

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

公共槽

void setNotchesVisible(bool visible)
void setWrapping(bool on)

受保护函数

virtual void initStyleOption(QStyleOptionSlider *option) const

重新实现的受保护函数

virtual bool event(QEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *pe) override
virtual void resizeEvent(QResizeEvent *e) override
virtual void sliderChange(QAbstractSlider::SliderChange change) override

详细说明

带凹槽的圆形表盘

当用户需要控制程序可定义范围内的某个值,且该范围要么是循环的(例如,角度从 0 度到 359 度),要么对话框布局需要一个正方形控件时,会使用 QDial。

由于 QDial 继承自QAbstractSlider ,因此该旋钮的行为与slider 类似。当wrapping() 为 false(默认设置)时,滑块和旋钮之间实际上没有区别。它们共享相同的信号、插槽和成员函数。使用哪一种取决于用户的期望以及应用程序的类型。

在滑块移动时,旋钮最初会持续发出valueChanged() 信号;您可以通过禁用tracking 属性来降低该信号的触发频率。即使禁用了跟踪功能,sliderMoved() 信号仍会持续发出。

当鼠标按钮被按下或释放时,该旋钮还会发出sliderPressed() 和sliderReleased() 信号。请注意,由于键盘和滚轮也可用于更改数值,因此旋钮的数值可能会发生变化而不会触发这些信号。

与滑块不同,QDial 会尝试绘制“美观”的刻度数量,而不是每行步长绘制一个刻度。 如果可能,绘制的刻度数量为每线步一个,但如果像素不足以绘制每个刻度,QDial 将跳过部分刻度,以尝试绘制一组均匀的刻度(例如,每隔一个或两个刻度绘制一个)。

与滑块一样,旋钮将QAbstractSlider 函数setValue()作为槽提供。

旋钮的键盘接口相当简单:left/up 和right/down 方向键会根据定义的singleStep 、Page Up 和Page Down 值调整旋钮的value ;而pageStep 、Home 和End 键则会将值设置为定义的minimum 和maximum 值。

如果您使用鼠标滚轮调节旋钮,增量值由以下三者中的较小值决定:wheelScrollLines 乘以singleStep ,以及pageStep 。

另请参阅 QScrollBar 、QSpinBox 、QSlider 以及“滑块示例”。

属性文档

[read-only] notchSize : int

该属性存储当前缺口大小

缺口大小以范围控制单位为单位,而非像素,其计算结果为singleStep()的倍数,从而使屏幕上的缺口大小接近notchTarget()。

访问函数:

int notchSize() const

另请参阅 notchTarget() 和singleStep()。

notchTarget : qreal

该属性用于指定凹槽之间的目标像素数

缺口目标值是指QDial 尝试在每个缺口之间放置的像素数。

实际尺寸可能与目标尺寸有所不同。

缺口的目标默认值为 3.7 像素。

访问函数:

qreal notchTarget() const
void setNotchTarget(double target)

notchesVisible : bool

该属性控制是否显示刻度

如果该属性设置为true ,则会在刻度盘周围绘制一系列刻度线以指示可用的数值范围;否则不显示刻度线。

默认情况下,此属性处于禁用状态。

访问函数:

bool notchesVisible() const
void setNotchesVisible(bool visible)

wrapping : bool

该属性用于指定是否启用换行功能

如果为 true,则启用换行;否则,将在刻度盘底部插入一些空格,以分隔有效值范围的两端。

如果启用,箭头可在刻度盘上朝向任意角度。如果禁用,箭头将仅限于刻度盘的上部;如果箭头旋转至刻度盘底部的空白处,它将被限制在有效值范围的最近一端。

默认情况下,此属性的值为false 。

访问函数:

bool wrapping() const
void setWrapping(bool on)

成员函数文档

[explicit] QDial::QDial(QWidget *parent = nullptr)

构建一个表盘。

parent 参数将作为参数传递给QAbstractSlider 构造函数。

[virtual noexcept] QDial::~QDial()

摧毁了表盘。

[override virtual protected] bool QDial::event(QEvent *e)

重写了:QAbstractSlider::event(QEvent *e)。

[virtual protected] void QDial::initStyleOption(QStyleOptionSlider *option) const

使用QDial 中的值初始化 `option `。当子类需要 `QStyleOptionSlider`,但又不想自己填写所有信息时,此方法非常有用。

另请参阅 QStyleOption::initFrom()。

[override virtual] QSize QDial::minimumSizeHint() const

重新实现了属性QWidget::minimumSizeHint 的访问函数。

[override virtual protected] void QDial::mouseMoveEvent(QMouseEvent *e)

重写了:QWidget::mouseMoveEvent(QMouseEvent *event)。

[override virtual protected] void QDial::mousePressEvent(QMouseEvent *e)

重写了:QWidget::mousePressEvent(QMouseEvent *event)。

[override virtual protected] void QDial::mouseReleaseEvent(QMouseEvent *e)

重写了:QWidget::mouseReleaseEvent(QMouseEvent *event)。

[override virtual protected] void QDial::paintEvent(QPaintEvent *pe)

重写了:QWidget::paintEvent(QPaintEvent *event)。

[override virtual protected] void QDial::resizeEvent(QResizeEvent *e)

重写了:QWidget::resizeEvent(QResizeEvent *event)。

[override virtual] QSize QDial::sizeHint() const

重新实现了属性QWidget::sizeHint 的访问函数。

[override virtual protected] void QDial::sliderChange(QAbstractSlider::SliderChange change)

重写了:QAbstractSlider::sliderChange (QAbstractSlider::SliderChange change)。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.