QDial 如果对您有用记得点赞哦)
QDial 类提供了一个圆形范围控制(如速度计或电位器)。QDial 用于当用户需要在可编程定义的范围内控制一个值,并且该范围要么是环绕的(例如,从 0 到 359 度测量的角度),要么对话框布局需要一个正方形小部件。由于 QDial 从 QAbstractSlider 继承,因此拨号的行为与滑块
类似。 当 wrapping()为 false(默认设置)时,滑块和刻度盘之间没有真正的区别。 它们共享相同的信号,插槽和成员功能。 您使用哪一个取决于您的用户期望和应用程序类型。
例子
迈速表
使用一个 QDial,以一个 QLabel,演示 QDial 的用法。当程序初始化界面后,拖动滑块的位置,label 则会显示 dial 的值。
头文件“mainwindow.h”具体代码如下。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QDial>
#include <QLabel>
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
/* 声明对象 */
QDial *dial;
QLabel *label;
private slots:
/* 槽函数 */
void dialValueChanged(int);
};
#endif // MAINWINDOW_H
源文件“mainwindow.cpp”具体代码如下。
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
/* 设置主窗体的位置与大小 */
this->setGeometry(0, 0, 800, 480);
/* 实例化对象和设置显示位置与大小 */
dial = new QDial(this);
dial->setGeometry(300, 100, 200, 200);
/* 设置页长(两个最大刻度的间距)*/
dial->setPageStep(10);
/* 设置刻度可见 */
dial->setNotchesVisible(true);
/* 设置两个凹槽之间的目标像素数 */
dial->setNotchTarget(1.00);
/* 设置dial值的范围 */
dial->setRange(0,100);
/* 开启后可指向圆的任何角度 */
//dial->setWrapping(true);
/* 实例化对象和设置显示位置与大小 */
label = new QLabel(this);
label->setGeometry(370, 300, 200, 50);
/* 初始化为0km/h */
label->setText("0km/h");
/* 信号槽连接 */
connect(dial, SIGNAL(valueChanged(int)),
this, SLOT(dialValueChanged(int)));
}
MainWindow::~MainWindow()
{
}
void MainWindow::dialValueChanged(int val)
{
/* QString::number()转换成字符串 */
label->setText(QString::number(val) + "km/h");
}
运行效果: