crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Получение порядкового номера QTreeView, с родителем и без
poluna
  опции профиля:
сообщение 15.12.2015, 17:11
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.10.2015
Пользователь №: 4458

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




Репутация:   0  


Привет всем.
Есть у меня класс TreeComboBox, как можно понять из названия в QComboBox у меня находится QTreeView.

Проблема в том, что я никак не могу получить порядковый номер элемента в QTreeView, для автоматического выбора при выделении в моей модели.
С помощью idx.row() я могу получить, но если у элемента уровень вложенности например 2, то получается ерунда.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 15.12.2015, 17:42
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

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




Репутация:   8  


А как вы определяете порядковый номер элемента в дереве? Всмысле что это значит? Т.е. какой порядковый номер должен быть у первого элемента вложенности 2 например?

Сообщение отредактировал lanz - 15.12.2015, 17:43
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
poluna
  опции профиля:
сообщение 16.12.2015, 9:40
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.10.2015
Пользователь №: 4458

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




Репутация:   0  


Забыла сказать, что QTreeView всегда находится в состоянии expandAll.
Порядковый номер хочу определять визуально так же как и в QComboBox.
Например
1 Item 1
2   |-item 2
3   |-item 3
4        |-item 4
5        |-item 5
6   |-item 6
7        |-item 7
8 Item 8
9   |-item 9
Пока только приходит в голову, обход всех элементов рекурсивно с их дочерними элементами и присвоением номера.
Или ввести свою сущность (строка) в модель, и с помощью нее строить модель и нумеровать строки.

Хотя честно говоря внятной и полной картины как это сделать нет. :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 16.12.2015, 10:04
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


poluna, расскажи поподробнее, какие действия хочешь совершить ? Для идентификации элемента вроде достаточно методов parent и data индекса

ну, и да, если хочешь такую сквозную нумерацию сделать - необходимо реализовать у элемента метод навроде GetMyNumber() , где произойдёт рекурсивный вызов метода родителя в том числе
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
poluna
  опции профиля:
сообщение 16.12.2015, 10:57
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.10.2015
Пользователь №: 4458

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




Репутация:   0  


Так как мой класс производен TreeComboBox от QComboBox, то мне нужно хотя бы переопределить функции: currentIndex, setCurrentIndex и currentText.
Это нужно например для ситуации, когда мне нужно добавить пользователя в группу, выбрав группу в дереве, нажав кнопку добавить и в появившемся диалоге добавления пользователя будет выбрана группа (выделенная ранее) и ...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 16.12.2015, 11:09
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


poluna, не совсем понимаю участия комбы в этом процессе :search: . В классе дерева обрабатываешь contextMenuEvent , там определяешь, какой элемент модели дерева щёлкнули (viewport() , indexAt() ) . По индексу модели отыскивается элемент
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
poluna
  опции профиля:
сообщение 16.12.2015, 11:27
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.10.2015
Пользователь №: 4458

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




Репутация:   0  


Мне просто нужен комбобокс с деревом! :)
Всё есть, но есть нюансы, из-за которых пока грустно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 16.12.2015, 11:31
Сообщение #8


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(poluna @ 16.12.2015, 13:27) *
Мне просто нужен комбобокс с деревом

так он же уже есть, как я понял )) Осталось обработку в дерево добавить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
poluna
  опции профиля:
сообщение 16.12.2015, 12:10
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.10.2015
Пользователь №: 4458

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




Репутация:   0  


И я о том же!
Видимо я не так выражаюсь.
Прикрепленное изображение

На картинке, показано, что у меня есть.
В диалоге "Создание группы" указывается, родитель он должен быть выбран таким же, как и выделенный в левом дереве основного окна.
А я пока могу выбрать только ветки первого уровня.
Так надеюсь понятней, что мне нужно. :)

Или я тебя не понимаю! :D
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 16.12.2015, 12:28
Сообщение #10


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


poluna, у меня обычно есть "внемодельное" дерево - источник, по которому модель пересобирается. Контейнер обычно на основе QMap<>

struct s_item
{
s_item* m_parent;
QVector<s_item*> m_children;

...

};


s_item* m_root;
QMap<s_item*,s_item*> m_tree;


У тебя этой очень удобной детальки , похоже, нету, поэтому мы не и понимаем друг друга :D В контейнере всё ищется и перебирается запросто

Сообщение отредактировал Алексей1153 - 16.12.2015, 12:30
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 22.11.2024, 10:06