crossplatform.ru

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

> Свое творение на тему свойств что ли выложить?, У меня модель, которая читает свойства прямо от QObject
Swappp
  опции профиля:
сообщение 26.11.2007, 16:38
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 20
Регистрация: 26.11.2007
Пользователь №: 25

Спасибо сказали: 1 раз(а)




Репутация:   1  


Свое творение на тему свойств что ли выложить? :) У меня модель, которая читает свойства прямо от QObject, которые помечены флагом USER. Правда это мой первый опыт общения с моделями, по этому не уверен, что все правильно, но вроде работает... Вложенные свойства реализуются путем объявления свойства типа QObject*, и соответственно выводятся все свойства этого объекта, при этом важно, что бы была правильная иерархия самих объектов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Swappp
  опции профиля:
сообщение 29.11.2007, 1:43
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 20
Регистрация: 26.11.2007
Пользователь №: 25

Спасибо сказали: 1 раз(а)




Репутация:   1  


Вот что получилось. В комплекте класс PropertiesModel и PropertiesDelegate и простой пример. Первый - модель, второй - делегат, в который добавлен выпадающей список для enum'ов. При создании модели, в конструктор передается объект, свойства которого надо изменять и отображать. Свойства соответственно описываются стандартным для Qt образом с обязательным указанием флага USER. Для реализации вложенных свойств создается ReadOnly свойство типа QObject*, который хранит указатель на другой объект со свойствами. Для использование свойств типа enum, надо соответствующий enum объявить с помощью Q_ENUMS.
Пока есть две проблемы:
1. На сколько критично правильное число строк выдаваемое rowCount()? На текущей момент выдается число всех свойств, а индексы создаются только для свойств с флагом USER.
2. Есть некоторые проблемы с вложенными свойствами. По задаче, для которой я это делал, требуется, при изменении одного из параметров заменять объект в одном из свойств на новый, возможно другого типа. Так вот, если есть только один уровень вложенности, то проблем не возникает, просто при изменении любого параметра генерируется сигнал layoutChanged, а при большем уровне вложенности (когда все открыто), все вылетает... Есть вариант все сворачивать, но это не очень удобно... Так же можно попробовать вообще запретить пользователю сворачивание, и тогда все сворачивать перед изменением и разворачивать после.
Прикрепленные файлы
Прикрепленный файл  properties_0.1.tar.gz ( 2.75 килобайт ) Кол-во скачиваний: 541
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 9.5.2025, 15:53