Свойства в общем и свойства 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 |
28.8.2009, 21:30
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 15.8.2009 Пользователь №: 1003 Спасибо сказали: 0 раз(а) Репутация: 0 |
Если кому интересно то все оказалось довольно просто.
В большинстве стандартных обьектов используется так называемый механизм d-указателей почитать про них можно здесь.Видимо это сделано для того чтобы люди с не особо прямыми руками меньше лазали в ядро библиотеки или просто чтоб удобней было писать Сам макрос Q_PROPERTY никаких данных не создает а только описывает способ доступа к ним. В моём случае доступ к дате можно было получить так :
|
|
|
Текстовая версия | Сейчас: 19.12.2024, 2:54 |