Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: unkeep от Июнь 20, 2013, 12:32



Название: [РЕШЕНО] подскажите как вставить в корень TreeView
Отправлено: unkeep от Июнь 20, 2013, 12:32
У меня новый итем вставляется в выбранного пользователем родителя. Однако в моём дереве нет одного, общего для всех родителя. Соответственно не могу вставить в корень :(
(http://my.jetscreenshot.com/19965/m_20130620-ejpt-99kb.jpg)

мои варианты:
1)отдельная кнопка для вставки в корень
2)несуществующий на самом деле, но отображающийся корень(для всех родитель) - не знаю как реализовать
3)добавить в базу данных корень

ваши варианты?



Название: Re: подскажите как вставить в корень TreeView
Отправлено: kambala от Июнь 20, 2013, 12:43
QTreeView::setRootIsDecorated(bool)


Название: Re: подскажите как вставить в корень TreeView
Отправлено: unkeep от Июнь 20, 2013, 12:59
у меня стоит тру. просто рута одного как такового нет. все модули 1,2,3..и тд и есть руты


Название: Re: подскажите как вставить в корень TreeView
Отправлено: kambala от Июнь 20, 2013, 13:31
рут может быть только один. а твои «рут»-элементы называются top-level items.

проверь, может у тебя где-то в коде на false сбрасывается.

у тебя QTreeView или QTreeWidget?


Название: Re: подскажите как вставить в корень TreeView
Отправлено: dio от Июнь 20, 2013, 13:48
Еще вариант, вставлять на верхний уровень, если нет выделенной записи дерева.


Название: Re: подскажите как вставить в корень TreeView
Отправлено: Alex Custov от Июнь 20, 2013, 15:13
invisibleRootItem() ?


Название: Re: подскажите как вставить в корень TreeView
Отправлено: Bepec от Июнь 20, 2013, 15:25
Alex а теперь смотрим на название темы и понимаем, что это не treeWidget :D


Название: Re: подскажите как вставить в корень TreeView
Отправлено: tester64 от Июнь 20, 2013, 16:00
QAbstractItemView::rootIndex()


Название: Re: подскажите как вставить в корень TreeView
Отправлено: unkeep от Июнь 21, 2013, 14:36
Еще вариант, вставлять на верхний уровень, если нет выделенной записи дерева.
да, рассматривал такой вариант, но сбросить выделение нельзя никак если что-то выбрано было


Название: Re: подскажите как вставить в корень TreeView
Отправлено: unkeep от Июнь 21, 2013, 14:53
QAbstractItemView::rootIndex()
ну вернул он мне
Код
C++ (Qt)
QModelIndex(-1,-1,0x0,QObject(0x0) )
и что дальше?


Название: Re: подскажите как вставить в корень TreeView
Отправлено: unkeep от Июнь 21, 2013, 14:57
рут может быть только один. а твои «рут»-элементы называются top-level items.

проверь, может у тебя где-то в коде на false сбрасывается.

у тебя QTreeView или QTreeWidget?
QTreeView . А на false не сбрасывался. пробовал специально поставить false так у "top-level items" исчезла возможность развёртывания. Список получился)


Название: Re: подскажите как вставить в корень TreeView
Отправлено: unkeep от Июнь 21, 2013, 15:17
рут может быть только один. а твои «рут»-элементы называются top-level items.

проверь, может у тебя где-то в коде на false сбрасывается.

у тебя QTreeView или QTreeWidget?
и мне всё таки кажется, что они рутовые. так ка у них masterID = null. По нормальному надо было бы сделать их masterID 1 и добавить запись с ID=1, masterID = null. Но тоже, запись в базе, ничего в себе не хранящая..мне кажеться, что можно выкрутиться как-то программно...


Название: Re: подскажите как вставить в корень TreeView
Отправлено: kambala от Июнь 21, 2013, 17:05
может ты через стили сделал его невидимым?


Название: Re: подскажите как вставить в корень TreeView
Отправлено: dio от Июнь 22, 2013, 17:39
Еще вариант, вставлять на верхний уровень, если нет выделенной записи дерева.
да, рассматривал такой вариант, но сбросить выделение нельзя никак если что-то выбрано было

Я реализовывал такой вариант при выполнении обновления (refresh). У меня было задействована QItemSelectionModel. Сброс выделения производился вызовом метода reset() у View и SelectionModel.


Название: Re: подскажите как вставить в корень TreeView
Отправлено: Akon от Июнь 23, 2013, 12:52
Цитировать
ваши варианты?
Контекстное меню, вызванное по щелчку на пустом месте (а не на айтеме) относится к руту. Также должно  меню рута и вызваться при щелчке на айтеме, только с удержанием Shift, например.


Название: Re: подскажите как вставить в корень TreeView
Отправлено: unkeep от Июнь 24, 2013, 09:28
может ты через стили сделал его невидимым?
нет.


Название: Re: подскажите как вставить в корень TreeView
Отправлено: unkeep от Июнь 24, 2013, 09:36
Цитировать
ваши варианты?
Контекстное меню, вызванное по щелчку на пустом месте (а не на айтеме) относится к руту. Также должно  меню рута и вызваться при щелчке на айтеме, только с удержанием Shift, например.

у QtreeView нет сигнала о клике по пустой области, и этого пустого места так мало, что трудно прицелиться.



Название: Re: подскажите как вставить в корень TreeView
Отправлено: Bepec от Июнь 24, 2013, 09:50
Код:
void mousePressEvent ( QMouseEvent * )

Как бы сигнал о клике в любом месте. А уже проверить "пустоту" не должно для вас составить труда.


Название: Re: подскажите как вставить в корень TreeView
Отправлено: unkeep от Июнь 25, 2013, 11:45
Решил добавить кнопку "Новый раздел"