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/upright/down 方向键通过定义的singleStep 调节刻度盘的valuePage UpPage Down 通过定义的pageStep 调节,而HomeEnd 键将值设置为定义的minimummaximum 值。

如果使用鼠标滚轮调节刻度盘,增量值由wheelScrollLines 乘以singleSteppageStep 的较小值决定。

另请参阅 QScrollBar,QSpinBox,QSlider滑块示例

属性文档

[read-only] notchSize : const 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)。

© 2025 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.