Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: enumerator от Август 09, 2013, 09:26



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


Название: Re: Виджеты для отображения NULL-значений
Отправлено: Bepec от Август 09, 2013, 09:43
QLineEdit и в функции обработки ввода проводить проверки?


Название: Re: Виджеты для отображения NULL-значений
Отправлено: enumerator от Август 09, 2013, 09:47
А каким образом предлагаете идентифицировать сам NULL? Пустая строка это не NULL и строка "NULL" это тоже не NULL.


Название: Re: Виджеты для отображения NULL-значений
Отправлено: mutineer от Август 09, 2013, 10:11
Добавь рядом кнопочку:)


Название: Re: Виджеты для отображения NULL-значений
Отправлено: enumerator от Август 09, 2013, 10:20
Я так и сделал: написал шаблонный класс типа CheckBox + Виджет нужного типа, если CheckBox активирован, то виджет блокируется.
Но как-то это не очень эстетично, поэтому и интересно, нет ли каких-либо готовых компонент для моей задачи.


Название: Re: Виджеты для отображения NULL-значений
Отправлено: Bepec от Август 09, 2013, 10:22
А как вы хотите NULL показать пользователю? Он же NULL. Пустота. Его не показать.
Потому резервируем слово NULL и наслаждаемся.


Название: Re: Виджеты для отображения NULL-значений
Отправлено: enumerator от Август 09, 2013, 10:25
В том и вопрос, как организовать отображение. Строка NULL - это строка, а не NULL-значение. Кроме того, хотелось бы использовать типизованные редакторы (календари, SpinBox-ы и проч.), а там строку и вовсе не ввести.


Название: Re: Виджеты для отображения NULL-значений
Отправлено: mutineer от Август 09, 2013, 10:27
ну как ты хочешь отобразить NULL, если любое отображаемое значение по твоему это не NULL?


Название: Re: Виджеты для отображения NULL-значений
Отправлено: enumerator от Август 09, 2013, 10:40
Возможно, каким-то образом скрыть основной редактор, какой-то визуальный эффект к нему применить. Сейчас я ему просто выставляю setEnabled( false ).


Название: Re: Виджеты для отображения NULL-значений
Отправлено: Bepec от Август 09, 2013, 10:43
Авторитетный диагноз - вы страдаете хренью.
Ввести NULL  пользователь не может. Так что выбирайте
1) строковый анализ;
2) аналоги чекбокса; (выше или ниже редактора)
3) кнопка NULL.


PS NULL на самом деле нет. NULL это тяпдеф  int = 0.


Название: Re: Виджеты для отображения NULL-значений
Отправлено: mutineer от Август 09, 2013, 10:47
Нарисуй поверх виджета черную дыру


Название: Re: Виджеты для отображения NULL-значений
Отправлено: voral от Август 09, 2013, 11:05
Отображение это как раз совсем не проблема. Можно посмотреть это в различных программах-инструментах работающих с БД. По моим наблюдениям все осуществляется примерно по следующему плану:
1. Отображение: в поле отображается "<NULL>" иногда с выделением специальным цветом (цвет можно вынести в настройки ПО)
2. Установка в NULL. Пункт в контекстном меню. Если для вашей программы наличие контекстного меню вещь не очевидная, то кнопка рядом с полем вполне разумное решение.
А для пущей "эстетичности" можно, например, нарисовать свой QLineEdit где эта кнопка будет визуально внутри поля ввода с правого края


Название: Re: Виджеты для отображения NULL-значений
Отправлено: Bepec от Август 09, 2013, 12:07
+1 к черной дыре.


Название: Re: Виджеты для отображения NULL-значений
Отправлено: enumerator от Август 09, 2013, 14:40
Остановился на варианте с кнопкой + отключение контрола ввода. Всем спасибо.