【常用控件】dial

65 阅读1分钟

  QDial表示一个拨号旋钮。有些程序通过鼠标拖动旋钮,即可完成一些相应的设置。

image-dial.png

1.核心属性

属性说明
value持有的数值
minimum最小值
maximum最大值
singleStep按下方向键的时候改变的步长
pageStep按下pageUp/pageDown的时候改变的步长
sliderPosition界面上旋钮显示的初始位置
tracking外观是否跟踪数值变化。默认值为true,一般不需要修改。
wrapping是否允许循环调整。即数值如果超过最大值,是否允许回到最小值。
notchesVisible是否显示刻度线
notchTarget刻度线之间的相对位置。数字越大,刻度线越稀疏。

2.核心信号

属性说明
valueChanged(int)数值改变时触发
rangeChanged(int,int)范围变化时触发

在界面上创建一个旋钮和一个label

//编写widge.cpp对旋钮初始化
Widget::Widget(QWidget* parent)
    :QWidget(parent)
    ,ui(new Ui::Widget)
{
    ui->setupUi(this);
        
    //设置可以循环旋钮
    ui->dial->setWrapping(true);
    //设置刻度线
    ui->dial->setNotchesVisible(true);
    //设置最大值为100
    ui->dial->setMaximum(100);
    //设置最小值为0
    ui->dial->setMinimum(0);
    //设置初始值为100
    ui->dial->setValue(100);
}

3.案例

编写widget.cpp,设置旋纽的valueChanged slot函数

void Widget::on_dial_valueChanged(int value)
{
    ui->label->setText(QString("当前不透明度为:") + QString::number(value));
    this->setWindowOpacity((double)value/100);
}

运行程序,观察效果,可以看到随着旋钮的旋转,不透明度发生明显的变化。

image-dial2.png