基本Widgets(10):【类】QDial [官翻]

QDial是一个圆形的范围控制组件,常用于角度或值的调整。它继承自QAbstractSlider,提供了类似滑块的功能,如valueChanged()和sliderMoved()信号。QDial的特性包括可配置的凹口显示、环绕包装行为以及键盘和鼠标交互。用户可以通过notchSize、notchTarget和wrapping等属性定制其视觉效果和行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QDial Class

QDial类提供了一个圆形的范围控制(如速度计或电位器)。

Header#include < QDial >
qmakeQT += widgets
InheritsQAbstractSlider
Inherited By

详细说明

img

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

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

当滑块移动时,刻度盘最初会连续发出valueChanged() 信号;通过禁用跟踪属性,可以减少其发出信号的频率。即使禁用了跟踪,sliderMoved() 信号也会连续发出。

当按下和释放鼠标按钮时,表盘还会发出sliderPressed() 和sliderReleased() 信号。请注意,拨号盘的值可以在不发出这些信号的情况下更改,因为键盘和滚轮也可以用来更改值。

与滑块不同的是,QDial尝试绘制一个“漂亮”的槽口数,而不是每行一步绘制一个槽口。如果可能的话,绘制的凹痕数量是每条线一步一个,但如果没有足够的像素绘制每个凹痕,QDial将跳过凹痕尝试并绘制统一的集合(例如,通过绘制每秒钟或第三个凹痕)。

与滑块一样,表盘使QAbstractSlider函数setValue()作槽函数。

拨号盘的键盘界面相当简单:左/上和右/下箭头键按定义的单步调整拨号盘的值,上翻页和下翻页按定义的页步调整拨号盘的值,Home和End键将值设置为定义的最小值和最大值。

如果使用鼠标滚轮调整刻度盘,则增量值由wheelScrollLines乘以singleStep和pageStep的较小值确定。

属性

  1. notchSize: const int 当前槽口大小
    凹口大小以范围控制单位表示,而不是以像素表示,如果可能的话,它是singleStep() 的倍数,将导致屏幕上的凹口大小接近notchTarget() 。
    默认情况下,此属性的值为1。

    Access functions:

    • int notchSize() const
  2. notchTarget: qreal 凹口之间的目标像素数
    凹口目标是每个凹口之间QDial尝试放置的像素数。
    实际大小可能与目标大小不同。
    默认凹口目标为3.7像素。

    Access functions:

    • qreal notchTarget() const

    • void setNotchTarget(double target)

      默认setNotchTarget (10)
  3. notchesVisible: bool 是否显示凹口
    如果该属性为真,则在刻度盘周围绘制一系列凹口,以指示可用值的范围;否则不显示凹口。
    默认情况下,此属性处于禁用状态。

    Access functions:

    • bool notchesVisible() const

    • void setNotchesVisible(bool visible)

      默认setNotchesVisible (true);
  4. wrapping: bool 是否启用环绕包装
    如果为true,则启用环绕;否则,将在刻度盘底部插入一些空格以分隔有效值范围的两端。
    如果启用,箭头可以指向刻度盘上的任何角度。如果禁用,箭头将限制在表盘的上部;如果将其旋转到表盘底部的空间中,箭头将被夹在有效值范围的最近端。
    默认情况下,此属性为false。

    Access functions:

    • bool wrapping() const

    • void setWrapping(bool on)

      默认setWrapping (true);

公共函数

构造析构

  1. QDial(QWidget *parent = nullptr)
  2. virtual ~QDial()

属性相关

  1. int notchSize() const
  2. qreal notchTarget() const
  3. void setNotchTarget(double target)
  4. bool notchesVisible() const
  5. bool wrapping() const

重写的公共函数

  1. virtual QSize minimumSizeHint() const override
  2. virtual QSize sizeHint() const override

公共槽

  1. void setNotchesVisible(bool visible) 属性相关
  2. void setWrapping(bool on) 属性相关

受保护的函数

  1. void initStyleOption(QStyleOptionSlider *option) const

重写的受保护的函数

  1. virtual bool event(QEvent *e) override
  2. virtual void mouseMoveEvent(QMouseEvent *e) override
  3. virtual void mousePressEvent(QMouseEvent *e) override
  4. virtual void mouseReleaseEvent(QMouseEvent *e) override
  5. virtual void paintEvent(QPaintEvent *pe) override
  6. virtual void resizeEvent(QResizeEvent *e) override
  7. virtual void sliderChange(QAbstractSlider::SliderChange change) override
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值