Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Admin от Февраль 21, 2005, 08:35



Название: QSpinBox и вещественные значения
Отправлено: Admin от Февраль 21, 2005, 08:35
Понадобилось указывать в QSpinBox вещественные значения. Например, доли милиметра, с точностью 0.1, но в стандартном варианте, вохможно указывать только целые числа.

Есть ли где класс в инете, уже с такой функциональностью. А то придется самому писать :)


Название: QSpinBox и вещественные значения
Отправлено: Anonymous от Февраль 21, 2005, 10:46
Есть подобный класс (до 0.1 мм), могу выслать, дай мейл.
Там числа правда не вещественные, а задаются 10-ми далями (напр. число 0.1 - это 10 в целом представлении, 5.3 = 53 и т.д.)


Название: QSpinBox и вещественные значения
Отправлено: Admin от Февраль 21, 2005, 12:45
вот мой Email
eugene[dot].awp.nnov.ru

Заранее спасибо!


Название: QSpinBox и вещественные значения
Отправлено: Racheengel от Февраль 21, 2005, 13:10
сорри, что-то ругается сервак, говорит, что такого юзера не существует :(
ну да ладно, вот код, он простейший:

Код:

#include <qspinbox.h>
#include <qstring.h>

class DecSpinBox : public QSpinBox
{
public:
DecSpinBox ( QWidget * parent = 0, const char * name = 0 ) : QSpinBox (parent, name) { setValidator(0); };
DecSpinBox (  int minValue, int maxValue, int step = 1, QWidget * parent = 0, const char * name = 0 ) : QSpinBox (minValue, maxValue, step, parent, name) { setValidator(0); };
protected:
virtual QString mapValueToText ( int v );
virtual int mapTextToValue ( bool * ok );
};

QString DecSpinBox::mapValueToText ( int v )
{
return QString("%1.%2").arg(v / 10).arg(v % 10);
}

int DecSpinBox::mapTextToValue ( bool * ok )
{
ok = false;
QString s = text();
// count "."
int c = s.contains('.');
if (c > 1) return -1; // more than one "." => error
s += '0'; // last "0" if no "." found
// remove "."
if (c) {
int i = s.find('.');
s.remove('.');
s.setLength(i+1);
}
// convert to number
return s.toInt(ok);
}
[/code]


Название: QSpinBox и вещественные значения
Отправлено: Admin от Февраль 21, 2005, 13:16
ага спасибо


Название: QSpinBox и вещественные значения
Отправлено: Racheengel от Февраль 21, 2005, 13:33
та нема за що, куме :)