File indexing completed on 2024-05-19 16:31:47

0001 /*
0002  *  SPDX-License-Identifier: GPL-2.0-or-later
0003  *
0004  *  SPDX-FileCopyrightText: 2003 Michael v.Ostheim <ostheimm@users.berlios.de>
0005  */
0006 
0007 #include <QDebug>
0008 #include <QFontMetrics>
0009 #include <QFrame>
0010 #include <QLabel>
0011 #include <QString>
0012 
0013 #include "displaynumber.h"
0014 
0015 DisplayNumber::DisplayNumber(QWidget *parent, int digits, int prec)
0016     : QLabel(parent)
0017 {
0018     setPrecision(prec);
0019     setWidth(digits);
0020 
0021     setFrameStyle(QFrame::Panel | QFrame::Sunken);
0022     setBackgroundRole(QPalette::Base);
0023     setAlignment(Qt::AlignCenter);
0024     setFocusPolicy(Qt::NoFocus);
0025 }
0026 
0027 DisplayNumber::~DisplayNumber()
0028 {
0029 }
0030 
0031 void DisplayNumber::setFont(const QFont &f)
0032 {
0033     QLabel::setFont(f);
0034     setWidth(dg);
0035 }
0036 
0037 void DisplayNumber::setWidth(int digits)
0038 {
0039     QFontMetrics fm(font());
0040     QString s(QStringLiteral("0123456789.+-"));
0041     int width = 0, charWidth = 0;
0042 
0043     for (int i = 0; i < 11; i++, width = fm.boundingRect(s[i]).width()) {
0044         charWidth = (width > charWidth) ? width : charWidth;
0045     }
0046 
0047     dg = digits;
0048     setMinimumWidth(dg * charWidth + charWidth / 2);
0049 }
0050 
0051 void DisplayNumber::setNum(double num)
0052 {
0053     QString text;
0054     setText(text.setNum(num, 'f', precision));
0055 }