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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QDateEdit без даты  (Прочитано 4920 раз)
UVV
Гость
« : Ноябрь 14, 2007, 07:32 »

Вот здесь была тема про это http://prog.org.ru/forum/index.php/topic,960.0.html
Можно поподробнее, что значит отнаследоваться?
Или может быть появились другие решения?
Записан
Kainit
Гость
« Ответ #1 : Ноябрь 14, 2007, 10:01 »

Цитировать
Можно поподробнее, что значит отнаследоваться?
Боюсь вам скажут что думают о ваших способностях к программированию... Да и про наследование лучше почитать книжку.

Цитировать
Вот здесь была тема про это http://prog.org.ru/forum/index.php/topic,960.0.html
В Qt 4.3.2 нет метода fix (и скорее всего это фантазии Sergeich-а)

есть 2 других интересных метода
Код:
QValidator::State QAbstractSpinBox::validate ( QString & input, int & pos )
который как раз можно и переопределить, чтобы он возвращал всегда QValidator::Acceptable
или же можно покопаться в
Код:
void QAbstractSpinBox::fixup ( QString & input ) const

Но скажу честное ИМХО, если бы я увидел программу в которой в QDateEdit стояли бы 0000:00:00 или ещё веселее - пустая строка, я бы эту программу выкинул бы без раздумий. Совершенно непонятно зачем создавать компонент с таким странным поведением?
Записан
Tonal
Гость
« Ответ #2 : Ноябрь 14, 2007, 11:25 »

Но скажу честное ИМХО, если бы я увидел программу в которой в QDateEdit стояли бы 0000:00:00 или ещё веселее - пустая строка, я бы эту программу выкинул бы без раздумий. Совершенно непонятно зачем создавать компонент с таким странным поведением?
Зачем такое поведение как раз понятно: нужно же что-то отображать, когда данных нет.
Другое дело, что отображать при этом 0000:00:00 - маразм.

Частично можно выкрутиться использовав свойства specialValueText и minimumDate, тогда, при установке даты в минимум будет отображаться строка из specialValueText.

Но это тоже не удобно, т.к.
1) Установить виджет в это состояние в ручную можно только введя минимальную дату, а не вводом specialValueText. Что требует её знания и вводит юзера в ступор.
2) Если в виджете отображается specialValueText, то следующее значение - на день больше. Что тоже не соответствует ожиданиям пользователя, особенно если QDateEdit в режиме calendarPopup. Да и не удобно это...

Решение проблемы 2, я как-то постил сюда в виде python-овского кода.
Для решения 1, можно воткнуть спец.кнопку, например.

Мы вышли из положения заменив QDateEdit полностью своим виджетом, т.к. там ещё и неудобная модель ввода (например нельзя выделить всю дату).
Но это решение, конечно, не очень Code Less...
Записан
Kainit
Гость
« Ответ #3 : Ноябрь 14, 2007, 11:36 »

Честно говоря, есть 1 нормальный способ
взять
QAbstractSpinBox.
Отнаследоваться и снабдить нужной функциональностью.
Записан
Tonal
Гость
« Ответ #4 : Ноябрь 14, 2007, 11:43 »

Практически всё равно от кого плясать, от QAbstractSpinBox или QLineEdit.
В любом случае QDateEdit пока можно использовать только как временный заполнитель места. :-(
Может в 4.4 это поменяется...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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