gpt4 book ai didi

c++ - QWT 表盘,显示单位

转载 作者:行者123 更新时间:2023-11-28 01:48:27 24 4
gpt4 key购买 nike

我尝试在 QT 5.8 中做速度计。我使用小部件 QWT 拨号。但我有问题显示单位标签 (km/h)。我用谷歌,但我没有找到它。我该怎么做?谢谢

最佳答案

我提出的解决方案是创建一个继承自QwtDial的类并覆盖paintEvent方法。

mydial.h

#ifndef MYDIAL_H
#define MYDIAL_H

#include <qwt_dial.h>

class myDial : public QwtDial
{
Q_OBJECT
public:
myDial(QWidget *parent = NULL );

protected:
void paintEvent(QPaintEvent *event);
};

#endif // MYDIAL_H

mydial.cpp

#include "mydial.h"

#include <QPainter>

myDial::myDial(QWidget *parent):QwtDial(parent)
{

}

void myDial::paintEvent(QPaintEvent *event)
{

QwtDial::paintEvent(event);
QPainter painter(this);
painter.setPen(Qt::black);
QFont font;
font.setPointSize(11);
painter.setFont(font);
QString text = QString("%1 km/h").arg(value());
auto c = rect().center();
auto Size = painter.fontMetrics().size(Qt::TextSingleLine, text);
painter.drawText(QPointF(c.x() -Size.width()/2, c.y()+5*Size.height()), text);

}

例子:

#include <QApplication>
#include "mydial.h"
#include <qwt_dial_needle.h>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

myDial w;
w.setScaleArc(30,330);
w.setLineWidth(15);
w.setWrapping(false);
QwtDialSimpleNeedle *nd = new QwtDialSimpleNeedle(QwtDialSimpleNeedle::Arrow, Qt::white, Qt::red);
w.setNeedle(nd);
w.setWindowTitle("Custom QwtDial");

w.show();

return a.exec();
}

enter image description here

关于c++ - QWT 表盘,显示单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43904204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com