qt 测速表盘类代码
时间: 2023-09-23 12:00:59 浏览: 152
Qt 测速表盘类代码可以用于创建一个实时显示速度的仪表盘界面。下面是一个简单的示例代码:
```cpp
#include <QtWidgets>
class Speedometer : public QWidget
{
public:
Speedometer(QWidget *parent = nullptr)
: QWidget(parent), m_value(0)
{
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
setMinimumSize(200, 200);
}
void setValue(int value)
{
m_value = value;
update(); // 更新界面显示
}
protected:
void paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
int side = qMin(width(), height());
painter.translate(width() / 2, height() / 2); // 将坐标原点移到窗口中心
painter.scale(side / 200.0, side / 200.0); // 缩放为200x200大小
// 绘制表盘背景
painter.setPen(QPen(Qt::black, 2));
painter.setBrush(Qt::white);
painter.drawEllipse(QPointF(0, 0), 90, 90);
// 绘制指针
painter.setPen(QPen(Qt::red, 3));
painter.drawLine(QPointF(0, 0), QPointF(80 * qSin(m_value / 100.0 * M_PI), -80 * qCos(m_value / 100.0 * M_PI)));
// 绘制刻度
painter.setPen(QPen(Qt::black, 2));
for (int i = 0; i <= 100; i += 10) {
painter.drawLine(QPointF(60 * qSin(i / 100.0 * M_PI), -60 * qCos(i / 100.0 * M_PI)),
QPointF(50 * qSin(i / 100.0 * M_PI), -50 * qCos(i / 100.0 * M_PI)));
}
}
private:
int m_value;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget window;
window.setFixedSize(400, 300);
Speedometer speedometer(&window);
speedometer.setValue(50); // 设置初始值为50
QVBoxLayout layout(&window);
layout.addWidget(&speedometer, 0, Qt::AlignCenter);
window.show();
return app.exec();
}
```
以上代码定义了一个名为`Speedometer`的类,继承自`QWidget`,用于绘制一个表盘界面。该类具有一个`setValue`函数用于设置表盘的指针位置。`paintEvent`函数负责绘制表盘的背景、指针和刻度。`main`函数创建一个窗口并将`Speedometer`实例添加到窗口中央进行显示,最后通过调用`app.exec()`启动应用程序的事件循环。
阅读全文