![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Swappp |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 20 Регистрация: 26.11.2007 Пользователь №: 25 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Свое творение на тему свойств что ли выложить?
![]() |
|
|
Admin |
![]()
Сообщение
#2
|
Администратор ![]() ![]() ![]() ![]() Группа: Администратор Сообщений: 646 Регистрация: 9.10.2007 Из: crossplatform.ru Пользователь №: 1 Спасибо сказали: 17 раз(а) Репутация: ![]() ![]() ![]() |
Ну раз понеслась такая пьянка, выкладывай!
![]() Только незабудь про описание, указать авторство и желательно скриншет. Тогда тему снова разделю, и выложу на сайте... Чувствуется нужно будет реализовывать функционал похожий на codeproject! |
|
|
Багира |
![]()
Сообщение
#3
|
![]() Злоба_дня ![]() ![]() ![]() Группа: Администратор Сообщений: 314 Регистрация: 9.10.2007 Из: Москва Пользователь №: 2 Спасибо сказали: 16 раз(а) Репутация: ![]() ![]() ![]() |
Свое творение на тему свойств что ли выложить? Ждем-с. ![]() ![]() |
|
|
Swappp |
![]()
Сообщение
#4
|
Студент ![]() Группа: Новичок Сообщений: 20 Регистрация: 26.11.2007 Пользователь №: 25 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Вот что получилось. В комплекте класс PropertiesModel и PropertiesDelegate и простой пример. Первый - модель, второй - делегат, в который добавлен выпадающей список для enum'ов. При создании модели, в конструктор передается объект, свойства которого надо изменять и отображать. Свойства соответственно описываются стандартным для Qt образом с обязательным указанием флага USER. Для реализации вложенных свойств создается ReadOnly свойство типа QObject*, который хранит указатель на другой объект со свойствами. Для использование свойств типа enum, надо соответствующий enum объявить с помощью Q_ENUMS.
Пока есть две проблемы: 1. На сколько критично правильное число строк выдаваемое rowCount()? На текущей момент выдается число всех свойств, а индексы создаются только для свойств с флагом USER. 2. Есть некоторые проблемы с вложенными свойствами. По задаче, для которой я это делал, требуется, при изменении одного из параметров заменять объект в одном из свойств на новый, возможно другого типа. Так вот, если есть только один уровень вложенности, то проблем не возникает, просто при изменении любого параметра генерируется сигнал layoutChanged, а при большем уровне вложенности (когда все открыто), все вылетает... Есть вариант все сворачивать, но это не очень удобно... Так же можно попробовать вообще запретить пользователю сворачивание, и тогда все сворачивать перед изменением и разворачивать после.
Прикрепленные файлы
|
|
|
Admin |
![]()
Сообщение
#5
|
Администратор ![]() ![]() ![]() ![]() Группа: Администратор Сообщений: 646 Регистрация: 9.10.2007 Из: crossplatform.ru Пользователь №: 1 Спасибо сказали: 17 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 19.12.2024, 17:17 |