Russian Qt Forum
Ноябрь 24, 2024, 20:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание иерархии через QObject?  (Прочитано 3560 раз)
Lego
Гость
« : Апрель 27, 2010, 17:02 »

Здравствуйте, только начал осваивать C++ и Qt в частности.
Стоит задача организации некой иерархии объектов заданного класса, с возможностью легко добавлять, передвигать и удалять элементы.
Первое решение - использовать QObject, в котором есть всё необходимое. Но возможно есть и более лучшие варианты.
Что могут на это сказать опытные люди?

Если всё же использовать в основе QObject, то хотелось бы использовать перекрытие его методов. Например children(), дабы получать от него не QObjectList, а скажем QSomeClassList (QList<SomeClass*>). Как такое можно реализовать и/или где можно об этом что-нибудь почитать?

Заранее всем спасибо.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 27, 2010, 19:30 »

>>Как такое можно реализовать и/или где можно об этом что-нибудь почитать?
Ну во-первых в учебнике по С++ (переопределение виртуальных методов).
Во-вторых, в переопределённом методе можно использовать возможности поиска детей заданного класса от самого QObject (например, T QObject::findChild ( const QString & name = QString() ) const)

Однако, имея в своём распоряжении такой метод у QObject, необходимость переопределения метода children я ставлю под сомнение
Записан

Юра.
Lego
Гость
« Ответ #2 : Апрель 27, 2010, 20:10 »

Переопределение методов - это понятно. А вот как его реализовать для методов (причём не виртуальных) QObject - не совсем, т.к. там совсем всё не просто.
А что можно сказать насчёт самого решения использовать для этих целей QObject?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Апрель 27, 2010, 21:38 »

не виртуальные методы нельзя переопределить.

>>А что можно сказать насчёт самого решения использовать для этих целей QObject?
>>...
>>с возможностью легко добавлять, передвигать и удалять элементы.
откровенно говоря, суть задачи не понятна.
Записан

Юра.
Lego
Гость
« Ответ #4 : Апрель 27, 2010, 22:18 »

Цитировать
не виртуальные методы нельзя переопределить.
Эээ... я, конечно, новичок, но всё же должен сказать, что вы или ошиблись, или не точно выразились.

Цитировать
откровенно говоря, суть задачи не понятна.
Всё просто - нужна иерархия объектов определённого класса. Объекты не большие, но их будет много. Соответственно, нужно чтобы их можно было находить в дереве, и манипулировать.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #5 : Апрель 27, 2010, 22:50 »

Я что то тож не вкуриваю))

Если все объекты - есть экземпляры одного класса и   
Цитировать
Стоит задача организации некой иерархии объектов заданного класса, с возможностью легко добавлять, передвигать и удалять элементы.
то не контейнер ли Вы изобретаете?
И при чём тут дерево? Смысл?
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.