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 }