I created a C++ class for generating a QML object. My class has a setter method that accepts a QString. I am attempting to pass a degree symbol to this method, however, the degree symbol appears as either a ? or a box depending on the font that I use. I have concluded that the font that I am using does not contain a degree symbol, thus the ? or box being displayed in its place. What font can I use that will display a degree symbol?
horizontalBarGraph.h
#ifndef HORIZONTALBARGRAPH_H
#define HORIZONTALBARGRAPH_H
#include <QObject>
#include <QQuickPaintedItem>
class HorizontalBarGraph : public QQuickPaintedItem
{
Q_OBJECT
Q_PROPERTY(QString sensorName READ getSensorName WRITE setSensorName NOTIFY sensorNameChanged)
Q_PROPERTY(QString units READ getUnits WRITE setUnits NOTIFY unitsChanged)
public:
HorizontalBarGraph(QQuickItem *parent = 0);
virtual void paint(QPainter *painter);
QString getSensorName();
QString getUnits();
void setSensorName(QString sensorName);
void setUnits(QString units);
signals:
void sensorNameChanged();
void unitsChanged();
private:
QString _sensorName;
QString _units;
};
#endif // HORIZONTALBARGRAPH_H
horizontalBarGraph.cpp
#include <QPainter>
#include "horizontalBarGraph.h"
HorizontalBarGraph::HorizontalBarGraph(QQuickItem *parent)
:QQuickPaintedItem(parent),
_sensorName("Sensor Name"),
_units("Units")
{
}
void HorizontalBarGraph::paint(QPainter *painter)
{
QRectF rect = this->boundingRect();
painter->setRenderHint(QPainter::Antialiasing);
QPen pen = painter->pen();
pen.setCapStyle(Qt::FlatCap);
QFont bottomFont("Sans Serif", 16, QFont::Bold);
QFont topFont("Sans Serif", 18, QFont::Bold);
QColor gray1(225, 225, 225);
QColor gray2(200, 200, 200);
QColor gray3(175, 175, 175);
//Sensor name, Units
painter->save();
painter->setFont(topFont);
pen.setColor(gray1);
painter->setPen(pen);
painter->drawText(rect.adjusted(0, 0, -50, -40), Qt::AlignLeft | Qt::AlignTop, _sensorName); //Draws sensor name
painter->drawText(rect.adjusted(50, 0, 0, -40), Qt::AlignRight | Qt::AlignTop, _units); //Draws units
painter->restore();
}
main.cpp
ptrHorizontalBarGraph->setSensorName("Oil Temp");
ptrHorizontalBarGraph->setUnits("\xb0 F");