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

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

Страниц: 1 [2] 3 4   Вниз
  Печать  
Автор Тема: Два диапазона значений в DoubleSpinBox  (Прочитано 19213 раз)
andrew.k
Гость
« Ответ #15 : Январь 15, 2012, 20:41 »

че разжевывать?
ты сам перечитай первый пост, а не с середины.
человек хочет два диапазона в одном контроле.
понятно что рализовать это можно, я говорил, что это не дружественно.
как пользователь должен узнать, что можно вводить, а что нельзя не начав вводить?
Записан
popper
Гость
« Ответ #16 : Январь 15, 2012, 23:36 »

Всем доброго времени суток.
Только тут будет упрощение: мне нужен не диапазон, а дополнительное конкретное число.
К примеру: разрешить пользователю вводить число 0.5 и числа из диапазона от 4 до 5.

Раз задача сводится только к дополнительному числу, а не диапазону, посмотри, может быть логика приложения может быть реализована с помощью QAbstractSpinBox::specialValueText
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #17 : Январь 16, 2012, 07:15 »

andrew.k, пользователь знает, какие числа он может туда вводить, так как возле спина стоит подсказка.
popper, что-то я так и не понял, что это за есть такое QAbstractSpinBox и с чем его едят...
Записан
Bepec
Гость
« Ответ #18 : Январь 16, 2012, 09:39 »

Igors, а попробовать перехватить снятие фокуса, или же временной промежуток, как предлагали?

Записан
andrew.k
Гость
« Ответ #19 : Январь 16, 2012, 10:11 »

andrew.k, пользователь знает, какие числа он может туда вводить, так как возле спина стоит подсказка.
Подсказка это хинт или лабел с надписью: сюда можно вводить либо 0.5 либо от 4 до 5?
А что это за магические числа? Любопытно.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #20 : Январь 16, 2012, 12:19 »

Да. Это лэйбел, на котором написано, что содержание элемента в расплаве (0.003, 0.01-0.08)% от  массы расплава. вот, что это за магические числа. Я не знаю, как мне сделать эту дырку между 0.003 и 0.01. Конечно же можно было при выходе из окошка ввода заменять неверное число на верное, но при этом будет "обман" пользователя. Он может не заметить этого и расчёт пойдёт уже по другим процентам...
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #21 : Январь 16, 2012, 12:44 »

сделай диапазоном сегмент [0.003, 0.08], после ввода проверяй на валидность если число попадает в интервал (0.003, 0.01): если значение плохое, то покажи месседжбокс с вариантами "поставить 0.003", "поставить 0.01" и "ввести другое самому".
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
« Ответ #22 : Январь 16, 2012, 12:52 »

Все равно не понимаю.
Содержание алкоголя в бутылке пива 8% - понимаю.
Содержание алкоголя в бутылке пива от 4-8% - понимаю.
Содержание алкоголя в бутылке пива (0.003, 0.01-0.08)% - не понимаю)

А вдруг я буду пользоваться твоей программой?)
Записан
popper
Гость
« Ответ #23 : Январь 16, 2012, 14:00 »

Класс QDoubleSpinBox есть наследник класса QAbstractSpinBox, в котором определено свойство specialValueText. Посмотри справку про это свойство. Оно определяет, какой текст должен отображаться при достижении нижней границы допустимого диапазона спинбокса.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #24 : Январь 16, 2012, 15:05 »

Igors, а попробовать перехватить снятие фокуса, или же временной промежуток, как предлагали?
Перехватывать нет необходимости, у валидатора есть метод fixup который позовется при снятии фокуса (и при нажатии Enter). Задержка также легко реализуется внутри валидатора (возвращать Intermediate если время не истекло). А приложение принимает данные по editingFinished

Вообще "а как с 2 диапазонами" не имеет самостоятельного значения - все то же самое что и с одним. А попытки проинформировать пользователя еще до начала ввода - ну для этого нужно слишком много экранного места, которого как правило нет. Обычно стоит с десяток edit'ов, (в 1 или неск столбиков), из них 2-4 имеют проверку на диапазон - где там писать min/max? А тултип легко может оказаться навязчивым, диапазон будет быстро запомнен. Проще и лучше вывалиться с диалогом и там уже расписать все возможные значения - это прекрасно обобщается.
Записан
andrew.k
Гость
« Ответ #25 : Январь 16, 2012, 15:49 »

проще, но не лучше.
Страшный сон пользователя - приложение, которое на каждый чих и клик вываливает по мессаджбоксу.
__________________
Вы согласны с этим?|
           [Ок]           |
---------------------
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #26 : Январь 16, 2012, 16:01 »

проще, но не лучше.
Страшный сон пользователя - приложение, которое на каждый чих и клик вываливает по мессаджбоксу.
Вот и обсуждается как "не на каждый".

сделай диапазоном сегмент [0.003, 0.08], после ввода проверяй на валидность если число попадает в интервал (0.003, 0.01): если значение плохое, то покажи месседжбокс с вариантами "поставить 0.003", "поставить 0.01" и "ввести другое самому".
Пользователь хочет ввести 0.005 (допустимое значение) и нажал первый ноль. Ваши действия?

Видимо когда тема становится длинной - отвечающие перестают ее читать ("не асилил" Улыбающийся)
Записан
BRE
Гость
« Ответ #27 : Январь 16, 2012, 16:53 »

Пользователь хочет ввести 0.005 (допустимое значение) и нажал первый ноль. Ваши действия?
Подсветить красненьким фоном строку ввода?
и не забыть отключить кнопочку Ok/Save/...
« Последнее редактирование: Январь 16, 2012, 17:03 от BRE » Записан
andrew.k
Гость
« Ответ #28 : Январь 16, 2012, 17:21 »

Я бы для этой ситуации примерно такое поведение реализовал.
И тогда не нужны никакие издевательские хинты.

Плюс конечно слайдер покрасивее сделал, чтобы все точки 0.003, 0.01 и 0.08 были отрисованы.
Можно еще графически отрисовать диапазон и отдельную точку, чтобы пользователь понимал, почему слайдер ведет себя так странно.
И тогда внутри спинбокса можно "править бал" валидаторами и чем хочешь.
« Последнее редактирование: Январь 16, 2012, 17:40 от andrew.k » Записан
andrew.k
Гость
« Ответ #29 : Январь 16, 2012, 17:39 »

Пейнт-дизайн на коленке.
Что-то вроде такого.
Записан
Страниц: 1 [2] 3 4   Вверх
  Печать  
 
Перейти в:  


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