New autolabel widget

This commit is contained in:
elecpower
2021-05-12 06:15:41 +10:00
parent 10e7a4fc47
commit 8b61ce5ce7
3 changed files with 112 additions and 0 deletions
+1
View File
@@ -8,6 +8,7 @@ set(shared_NAMES
autocombobox
autodoublespinbox
autohexspinbox
autolabel
autolineedit
autoprecisioncombobox
autoslider
+67
View File
@@ -0,0 +1,67 @@
/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "autolabel.h"
#include <QFontMetrics>
AutoLabel::AutoLabel(QWidget * parent):
QLabel(parent),
AutoWidget(),
m_charField(NULL),
m_strField(nullptr)
{
}
AutoLabel::~AutoLabel()
{
}
void AutoLabel::setField(char * field, GenericPanel * panel)
{
m_charField = field;
setPanel(panel);
updateValue();
}
void AutoLabel::setField(QString & field, GenericPanel * panel)
{
m_strField = &field;
setPanel(panel);
updateValue();
}
void AutoLabel::setWidth(int numChars)
{
QFontMetrics *f = new QFontMetrics(this->font());
QSize sz = f->size(Qt::TextSingleLine, QString(numChars, QChar('X')));
setMinimumWidth(sz.width());
delete f;
}
void AutoLabel::updateValue()
{
setLock(true);
if (m_strField)
setText(*m_strField);
else if (m_charField)
setText(m_charField);
setLock(false);
}
+44
View File
@@ -0,0 +1,44 @@
/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#pragma once
#include "autowidget.h"
#include <QLabel>
class AutoLabel: public QLabel, AutoWidget
{
Q_OBJECT
public:
explicit AutoLabel(QWidget * parent = nullptr);
virtual ~AutoLabel();
virtual void updateValue() override;
void setField(char * field, GenericPanel * panel = nullptr);
void setField(QString & field, GenericPanel * panel = nullptr);
void setWidth(int numChars);
private:
char *m_charField;
QString *m_strField;
};