|
|
|
becks |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Добрый день!
Есть QTreeView для него модель QStandardItemModel. QTreeView содержит 3 колонки. До сих пор заполнял только первую с помощью appendRow, где был только 1 элемент. Теперь появилась задача по клику на элементе из первой колонки вывести некоторую инфу во 2 и 3 колонку этой строки. как получить текущий item (по которому был клик) знаю:
Как теперь в строке (что и у этого item'a) вставить значения для 2 и 3 столбца? |
|||
|
||||
kilopmer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.10.2011 Репутация: 1 Всего: 1 |
Просто в той же строке, что и у index, меняешь две колонки.
|
|||
|
||||
becks |
|
||||||
Бывалый Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Что-то у меня падает на этих строке.
Просто сейчас я когда добавлял данные в модель использовал:
где item - это один единственный item, а не лист из 3 item. Сейчас я поменял на:
И все равно падает. |
||||||
|
|||||||
kilopmer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.10.2011 Репутация: 1 Всего: 1 |
Вот так работает.
У вас вообще табличка появляется? |
|||
|
||||
becks |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Сейчас попробую все понятно и подробно расписать.
Потом добавляю некоторый item, будем называть его заданием (иконка человечка на графе). Он всегда добавляется в конец списка главного уровня (наследники от рута):
По этому заданию выполняются некоторые действия в результате которых к нему добавляются чайлды. Добавляются они через appendRow(). Единственное, я не всегда добавляю список, состоящий из 3 айтемов. Все дерево у меня сформировано, например, так (кое что прикрыл прямоугольничками): только после этого я хочу, по клику на элементе из дерева отображать некоторую информацию в графах "рубрика" и "реферат". Т.е. до этого они пустые. Это сообщение отредактировал(а) becks - 2.10.2012, 11:33 |
||||
|
|||||
kilopmer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.10.2011 Репутация: 1 Всего: 1 |
кликните именно на "результаты", тогда вылета не будет? (пока добавляйте просто строку одинаковую для всех)
|
|||
|
||||
kilopmer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.10.2011 Репутация: 1 Всего: 1 |
а все понятно, Вам просто надо аккуратно родителя отслеживать, через parent() (у QModelIndex). Вы как конкретно хотите сделать, чтобы при щелчке, на "Результаты" срабатывало, или на дочерние, или и то и другое?)
|
|||
|
||||
becks |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Переделал добавление, теперь везде appendRow() добавляет только списки из 3 элементов.
Причем для проверки добавляю в appendRow() лист не с пустыми 2 и 3 элементом, а с некоторым текстом, текст успешно добавляется в колонки. Что имеем. Если кликать на элемент с "человечком", то вуаля текст во 2 и 3 колонках меняется. Если кликать по их дочерним элементам типа "Страница","Результаты", элемент с Домиком или телефоном, то либо ничего не происходит, текст во 2 и 3 колонках не меняется, либо программа падает. |
|||
|
||||
kilopmer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.10.2011 Репутация: 1 Всего: 1 |
Надо аккуратно отслеживать родителя, так как у них нумерация в каждом потомке заново начинается, и менять текст именно в потомках. Это сообщение отредактировал(а) kilopmer - 2.10.2012, 13:57 |
|||
|
||||
becks |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Я бы хотел чтобы на любом элементе из колонки результаты срабатывало. Представляете как сделать? Если я правильно понимаю индекс завязан на родителя, и начинается с каждого родителя у детей заново. |
|||
|
||||
kilopmer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.10.2011 Репутация: 1 Всего: 1 |
а если я допустим щелкнул на колонку, то результаты в 2 и 3 столбце этой же строки, или у родителя менять хотите колонки Реферат и Рубрика? Можно при создании, разные сигналы при щелчке вешать и потом отлавливать.
|
|||
|
||||
becks |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
хочу результаты именно в этой строке |
|||
|
||||
kilopmer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.10.2011 Репутация: 1 Всего: 1 |
если в этой же строке
|
|||
|
||||
becks |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Ой, спасибо-спасибо. Теперь работает . Только поправлю немножко:
|
||||
|
|||||
becks |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
А вот еще не подскажите, можно ли как-нибудь организовать так, чтобы допустим для строки "Страница" содержимое 2 колонки занимало и место детей во второй колонке. Т.е.:
Это сообщение отредактировал(а) becks - 2.10.2012, 15:00 |
|||
|
||||
Правила форума "С/С++: Кроссплатформенное программирование, 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. |