![]() |
|
|
![]()
|
|
| becks |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Добрый день, коллеги, есть задача красиво отображать данные в виде дерева (если конкретно, то у каждого узла должна быть иконка и текст). Так же необходимо иметь возможность добавлять узлы на всех уровнях дерева, удалять узлы (и если это не лист, то удаляется вся ветка, находящаяся ниже узла), редактировать узлы (менять текст узла и может быть иконку). В принципе все.
1) Подскажите, подойдет ли мне QTreeWidget или все же тут надо свою модель описывать и использовать QTreeView? 2) Хотелось бы увидеть простой примерчик подобной задачи (QTreeView + QStandardItemModel) , что-то нигде ничего подобного не нашел. Буду очень благодарен. Спасибо. |
|||
|
||||
| _GRIN_ |
|
||||||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
QTreeWidget - это по сути обёртка над QTreeView + QStandardItemModel =).
Когда удаляешь QStandardItem он удаляет все свои чайлды (аналогично для QTreeWidgetItem). http://qt-project.org/doc/qt-4.8/qstandarditem.html#setIcon http://qt-project.org/doc/qt-4.8/qstandarditem.html#setText
Тут вообщем суть в том, что все манипуляции ты производишь в модели - а вью тебе пофиг - тролли за тебя уже позаботились, что бы вью модель адекватно отобразил. взять корневой айтем: http://qt-project.org/doc/qt-4.8/qstandard...visibleRootItem добавление новых строк (в строке может быть несколько полей) к айтему (узлу): http://qt-project.org/doc/qt-4.8/qstandard....html#appendRow удаление из узла айтема (который в свою очередь тоже может быть узлом: http://qt-project.org/doc/qt-4.8/qstandard....html#removeRow Корневой айтем можно и не брать а использовать обёртки: void QStandardItemModel::appendRow ( const QList<QStandardItem *> & items ) и тому подобные, которые внутри всё равно через корневой айтем работают. P.S. Пример писать лень =). Из личного опыта советую всё-таки использовать вью+модель, а не виджет. Это сообщение отредактировал(а) _GRIN_ - 21.5.2012, 22:46 -------------------- Дорогу осилит идущий |
||||||
|
|||||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Если дерево большое - лучше написать свою модель, стандартная будет работать медленно.
При использовании QTreeWidget в дизайнере его можно заполнить содержимым (в том числе иконки, всплывающие подсказки и т.п.). Посмотрев на сгенерерованный uic код, можно увидеть, как добавлять новые узлы. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
ну... можно и я проголосую за вью и модель, вместо стандартного виджета ? becks, даже если сейчас тебя удовлетворяет виджет, то завтра (поверь опыту) тебе потребуется что-то такое, что гораздо удобнее сделать через модель (например, подкрасить фон для строк, удовлетворяющих какому-либо условию - отрицательный баланс или ещё что-то в этом роде) -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| becks |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Всем большое спасибо за помощь! Так и поступлю вью + модель, тем более за вчерашний день немного знания прокачал.
Подскажите еще по такому вопросу. В зависимости от значения QComboBox создавать в QGroupBox динамически некоторые виджеты (QLineEdit, QLabel). Добавляю их в layot, у QGroupBox устанавливаю этот layot.
Как при изменении значения QComboBox грамотно почистить layot у QGroupBox. Спасибо. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
becks, нечестно так поступать с теми, кто в дальнейшем будет искать про layout'ы и удаление из них widget'ов:
найдя эту тему, они увидят, что тема про model/view и пойдут дальше. Намёк понял в правилах форума не зря сказано: один вопрос - одна тема -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| becks |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Намек понят ) Тема создана, кидаю ссылку для тех кто сюда заскочит. http://forum.vingrad.ru/forum/act-ST/f-466...7/unread-1.html borisbn прошу в по новой теме подсказать!) |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |