Russian Qt Forum
Май 02, 2024, 07:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSpinBox и вещественные значения  (Прочитано 7306 раз)
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« : Февраль 21, 2005, 08:35 »

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

Есть ли где класс в инете, уже с такой функциональностью. А то придется самому писать Улыбающийся
Записан
Anonymous
Гость
« Ответ #1 : Февраль 21, 2005, 10:46 »

Есть подобный класс (до 0.1 мм), могу выслать, дай мейл.
Там числа правда не вещественные, а задаются 10-ми далями (напр. число 0.1 - это 10 в целом представлении, 5.3 = 53 и т.д.)
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #2 : Февраль 21, 2005, 12:45 »

вот мой Email
eugene[dot].awp.nnov.ru

Заранее спасибо!
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Февраль 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]
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #4 : Февраль 21, 2005, 13:16 »

ага спасибо
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Февраль 21, 2005, 13:33 »

та нема за що, куме Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.147 секунд. Запросов: 22.