crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Свойства в общем и свойства 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.

Но тут и начались сложности.
Например код :
qDebug()<<"DATE VALUE"<<endl<<date;
qDebug()<<"DATE PROP"<<endl<<property("date");
qDebug()<<"DATE SET"<<endl<<setProperty("date",date);
qDebug()<<"DATE PROP"<<endl<<property("date");


приводит к довольно любопытному выводу :
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  


Цитата(kwisp @ 16.8.2009, 1:35) *
может в классе наследнике в макросе Q_PROPERTY написать нужную функцию. или создать новое свойство?


К сожалению такой способ не срабатывает. Подозреваю потому, что не переопределенные функции продолжают использовать свойство наследника а также его функции редактирования и получения свойства.

А создание нового свойства равносильно переопределению всех функций класса и переписыванию всего кода с минимальными изменениями.

Овчинка не стоит выделки. С трудом вериться что разработчики Qt не предусмотрели возможность переопределения методов работы со свойствами, но в документации про ето не слово, как к примеру и про макросы Q_Q и Q_D которые широко используются в реализациях стандартных классов (ет так к слову :))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.12.2024, 0:13