Свойства в общем и свойства QDateTimeEdit в частности |
Здравствуйте, гость ( Вход | Регистрация )
Свойства в общем и свойства QDateTimeEdit в частности |
S@D}{U |
15.8.2009, 23:53
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 15.8.2009 Пользователь №: 1003 Спасибо сказали: 0 раз(а) Репутация: 0 |
Доброго всем времени суток.
У меня возникла следующая проблема: необходимо реализовать возможность отображение в виджете QDateEdit нулевой даты , т.е той для которой верно QDate().isNull(); Первым и естественным на мой взгляд решением было создать потомка который будет переопределять функции QString textFromDateTime ( const QDateTime & dateTime ) const; и void setDate(const QDate & date); В textFromDateTime добавить проверку даты на нулевое значение и при положительной проверке возвращать заданный текст заместо вызова конвертирования значения даты в текст определенного в потомке. В setDate так же сделать проверку на нулевое значение и при положительном результате изменять свойство обьекта напрямую без каких либо проверок.Так как определенная по умолчанию функция делает проверку на нулевое значение и если проверка положительна устанавливает дату в значение свойства minimumDate. Но тут и начались сложности. Например код :
приводит к довольно любопытному выводу : DATE VALUE QDate("") DATE PROP QVariant(QDate, QDate("Сб янв 1 2000") ) DATE SET true DATE PROP QVariant(QDate, QDate("Сб янв 1 2000") ) Т.е данные устанавливаются , но судя по всему устанавливаются слотом который определен в базовом классе, а не напрямую меняется значение указанного свойства. Если кто нибудь знает как можно переключить функцию изменяющую свойство обьекта на другую или хотя бы как решить данную задачу другим способом просьба поделиться |
|
|
S@D}{U |
16.8.2009, 11:48
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 15.8.2009 Пользователь №: 1003 Спасибо сказали: 0 раз(а) Репутация: 0 |
может в классе наследнике в макросе Q_PROPERTY написать нужную функцию. или создать новое свойство? К сожалению такой способ не срабатывает. Подозреваю потому, что не переопределенные функции продолжают использовать свойство наследника а также его функции редактирования и получения свойства. А создание нового свойства равносильно переопределению всех функций класса и переписыванию всего кода с минимальными изменениями. Овчинка не стоит выделки. С трудом вериться что разработчики Qt не предусмотрели возможность переопределения методов работы со свойствами, но в документации про ето не слово, как к примеру и про макросы Q_Q и Q_D которые широко используются в реализациях стандартных классов (ет так к слову ) |
|
|
Текстовая версия | Сейчас: 19.12.2024, 0:13 |