一.前言
文章只是楼主学习过程的记录,不能面面俱到,也不能每个点都讲到,不喜勿喷
二.QwtKnob是啥??
文档原文:
The QwtKnob widget imitates look and behavior of a volume knob on a radio. It looks similar to QDial - not to QwtDial.
QwtKnob模仿收音机音量旋钮的外观和行为。它看起来像QDial ,但不是QwtDial。
三.使用举例
1.拖动一个QwtKnob
2.常规属性的设置
// 设置旋钮的直径,如无特殊需要可使用默认值
ui->Knob->setKnobWidth(400);
// 设置刻度能显示的角度,默认是270
ui->Knob->setTotalAngle(270.0);
// 设置圆环阴影风格
ui->Knob->setKnobStyle(QwtKnob::KnobStyle::Sunken);
// 设置圆环宽度
ui->Knob->setBorderWidth(2);
// 设置旋钮的标记风格,这里设置为三角形
ui->Knob->setMarkerStyle(QwtKnob::MarkerStyle::Triangle);
// 设置旋钮标记块的大小
ui->Knob->setMarkerSize(12);
3.设置起始值位置
这个主要是通过QwtRoundScaleDraw类设置的
QwtRoundScaleDraw *roundScaleDraw = new QwtRoundScaleDraw();
roundScaleDraw->setAngleRange(-135,135);
关于setAngleRange,文档是这么解释的
Adjust the baseline circle segment for round scales.
调整圆尺度的基线圆段
The baseline will be drawn from min(angle1,angle2) to max(angle1, angle2). The default setting is [ -135, 135 ]. An angle of 0 degrees corresponds to the 12 o’clock position, and positive angles count in a clockwise direction.
基线将从min(angle1,angle2)绘制到max(angle1, angle2)。默认设置为[- 135,135]。0度的角对应于12点钟方向的位置,正角按顺时针方向计算。
楼主的理解,这个函数是用来设置圆环的多大范围可以旋转,而第一个参数设置的0所在的位置,第二个参数设置的是最大值的位置,变化的方向是顺时针方向(有错请指出)
3.1
QwtRoundScaleDraw *roundScaleDraw = new QwtRoundScaleDraw();
roundScaleDraw->setAngleRange(-135,135);
ui->Knob->setScaleDraw(roundScaleDraw);
QwtRoundScaleDraw *roundScaleDraw = new QwtRoundScaleDraw();
roundScaleDraw->setAngleRange(-180,180);
ui->Knob->setScaleDraw(roundScaleDraw);
4.设置数值范围
QwtScaleDiv scaleDiv = ui->Knob->scaleEngine()->divideScale(5,25,5,5,1.0);
ui->Knob->setScale(scaleDiv);
参数说明如下:
5.监听旋钮滚动数值的变化(使用信号槽)
connect(ui->Knob,SIGNAL(valueChanged(double)),this,SLOT(onValueChanged(double)));
onValueChanged(double value)
{
//qDebug()<<QStringLiteral("旋钮当前数值:")<<value;
ui->label_2->setNum(value);
}