Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Chester от Январь 11, 2010, 14:28



Название: QDoubleSpinBox
Отправлено: Chester от Январь 11, 2010, 14:28
Доброе время суток!!!
Использую QDoubleSpinBox..и вот там есть такой сигнал valueChanged(double d). Этот сигнал передает новое значение...а можно как-нить узнать на сколько изменилось мое старое значение???...т.е. мне нужно не само значение,а приращение


Название: Re: QDoubleSpinBox
Отправлено: ilot от Январь 11, 2010, 14:47
Тот объект, который должен знать приращение, получает сигнал valueChanged(double) и в одной из своих переменных хранит старое значение (полученное в прошлый раз). Вычисляешь приращение, запоминаешь значение, полученное с сигналом. Подходит?


Название: Re: QDoubleSpinBox
Отправлено: Chester от Январь 11, 2010, 14:54
Просто не хочется хранить 4 переменные(ибо у меня 4 СпинБокса)
Я просто думаю...можт есть какой-нибудь стандартный метод


Название: Re: QDoubleSpinBox
Отправлено: ilot от Январь 11, 2010, 15:13
Можно еще наследовать от QDoubleSpinBox собственный класс и определить в нем новый сигнал, возвращающий приращение. Как то так:
Код:
class MyBox: public QDoubleSpinBox{
Q_OBJECT
public:
MyBox(QWidget *pwgt = 0):QDoubleSpinBox(pwgt){
//...
connect(this, SIGNAL(valueChanged(double)), SLOT(evaluteIncrement(double)));
}
//...
private slots:
void evaluteIncrement(double newValue){
//вычисляем приращение на основе старого и обновленного значений
emit valueIncrement(newValue - oldValue);
}
signals:
void valueIncrement(double);
};
Создаете необходимое кол-во экземпляров MyBox; сигнал valueIncrement соединяется с нужными объектами.


Название: Re: QDoubleSpinBox
Отправлено: Chester от Январь 11, 2010, 16:14
Спасибо!!!Так пойдет  :)