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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Виджеты для отображения NULL-значений  (Прочитано 4719 раз)
enumerator
Гость
« : Август 09, 2013, 09:26 »

Добрый день.
Возникла необходимость организовать ввод значений различного типа (строки, числа, даты и т.п.) с возможностью указания неопределенного (NULL) значения. Нет ли каких-либо готовых компонент для решения данной задачи?
Записан
Bepec
Гость
« Ответ #1 : Август 09, 2013, 09:43 »

QLineEdit и в функции обработки ввода проводить проверки?
Записан
enumerator
Гость
« Ответ #2 : Август 09, 2013, 09:47 »

А каким образом предлагаете идентифицировать сам NULL? Пустая строка это не NULL и строка "NULL" это тоже не NULL.
Записан
mutineer
Гость
« Ответ #3 : Август 09, 2013, 10:11 »

Добавь рядом кнопочку:)
Записан
enumerator
Гость
« Ответ #4 : Август 09, 2013, 10:20 »

Я так и сделал: написал шаблонный класс типа CheckBox + Виджет нужного типа, если CheckBox активирован, то виджет блокируется.
Но как-то это не очень эстетично, поэтому и интересно, нет ли каких-либо готовых компонент для моей задачи.
Записан
Bepec
Гость
« Ответ #5 : Август 09, 2013, 10:22 »

А как вы хотите NULL показать пользователю? Он же NULL. Пустота. Его не показать.
Потому резервируем слово NULL и наслаждаемся.
Записан
enumerator
Гость
« Ответ #6 : Август 09, 2013, 10:25 »

В том и вопрос, как организовать отображение. Строка NULL - это строка, а не NULL-значение. Кроме того, хотелось бы использовать типизованные редакторы (календари, SpinBox-ы и проч.), а там строку и вовсе не ввести.
Записан
mutineer
Гость
« Ответ #7 : Август 09, 2013, 10:27 »

ну как ты хочешь отобразить NULL, если любое отображаемое значение по твоему это не NULL?
Записан
enumerator
Гость
« Ответ #8 : Август 09, 2013, 10:40 »

Возможно, каким-то образом скрыть основной редактор, какой-то визуальный эффект к нему применить. Сейчас я ему просто выставляю setEnabled( false ).
Записан
Bepec
Гость
« Ответ #9 : Август 09, 2013, 10:43 »

Авторитетный диагноз - вы страдаете хренью.
Ввести NULL  пользователь не может. Так что выбирайте
1) строковый анализ;
2) аналоги чекбокса; (выше или ниже редактора)
3) кнопка NULL.


PS NULL на самом деле нет. NULL это тяпдеф  int = 0.
Записан
mutineer
Гость
« Ответ #10 : Август 09, 2013, 10:47 »

Нарисуй поверх виджета черную дыру
Записан
voral
Гость
« Ответ #11 : Август 09, 2013, 11:05 »

Отображение это как раз совсем не проблема. Можно посмотреть это в различных программах-инструментах работающих с БД. По моим наблюдениям все осуществляется примерно по следующему плану:
1. Отображение: в поле отображается "<NULL>" иногда с выделением специальным цветом (цвет можно вынести в настройки ПО)
2. Установка в NULL. Пункт в контекстном меню. Если для вашей программы наличие контекстного меню вещь не очевидная, то кнопка рядом с полем вполне разумное решение.
А для пущей "эстетичности" можно, например, нарисовать свой QLineEdit где эта кнопка будет визуально внутри поля ввода с правого края
Записан
Bepec
Гость
« Ответ #12 : Август 09, 2013, 12:07 »

+1 к черной дыре.
Записан
enumerator
Гость
« Ответ #13 : Август 09, 2013, 14:40 »

Остановился на варианте с кнопкой + отключение контрола ввода. Всем спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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