Название: Различное контекстное меню для каждого элемента QTreeView Отправлено: kryksyh от Февраль 22, 2013, 10:18 Привет.
Хочется сделать так, чтобы у разных групп элементов в QTreeView с кастомной моделью было возможным установить различные контекстные меню. Добавить экшены к QTreeView получилось, но приходится добавлять все возможные экшены, а в них самих проверять по кому же мы щелкнули. Название: Re: Различное контекстное меню для каждого элемента QTreeView Отправлено: carrygun от Февраль 22, 2013, 10:37 Опишите подробнее, можно даже с картинками.
Как я сейчас понял то можно перекрыть mousePressEvent(), смотреть на индексы/другие параметры/что-то, что нужно вам/... перемещать нужное меню, в зависимости от параметров, а потом показывать. Но это как я понял. Может вы хотели что-то другое? Название: Re: Различное контекстное меню для каждого элемента QTreeView Отправлено: kryksyh от Февраль 22, 2013, 10:50 Вобщем, сделать возможным отображение разных меню (разных наборов экшенов) для разных элементов дерева.
Щелкаем по одному - одно меню, щелкаем по другому - другое меню. (http://ompldr.org/taGp0dw) (http://ompldr.org/vaGp0dw/Bennu - 0.png) (http://ompldr.org/taGp0eA) (http://ompldr.org/vaGp0eA/Bennu - 1.png) Название: Re: Различное контекстное меню для каждого элемента QTreeView Отправлено: carrygun от Февраль 22, 2013, 11:02 Отнаследоваться от QTreeView, создать в нем нужные меню. Далее, в mousePressEvent() смотреть на кнопку мыши и на индекс методом indexAt(). Отличать индексы по нужным параметрам (вложенность, столбец и т. д.), двигать нужное меню в нужную точку и показывать. Как один из вариантов. Может и чего еще придумать можно, но я так бы сделал.
Название: Re: Различное контекстное меню для каждого элемента QTreeView Отправлено: twp от Февраль 22, 2013, 11:06 Отнаследоваться от QTreeView, создать в нем нужные меню. Далее, в mousePressEvent() смотреть на кнопку мыши и на индекс методом indexAt(). Отличать индексы по нужным параметрам (вложенность, столбец и т. д.), двигать нужное меню в нужную точку и показывать. Как один из вариантов. Может и чего еще придумать можно, но я так бы сделал. mousePressEvent() не корректно обрабатывать поскольку контекстное меню можно вызвать клавиатурой. Для этих целей есть Код Еще можно установить contextMenuPolicy в Qt::CustomContextMenu и ловить сигнал Код
Название: Re: Различное контекстное меню для каждого элемента QTreeView Отправлено: _OLEGator_ от Февраль 22, 2013, 11:12 Есть еще вариант с сигналом
Код
Название: Re: Различное контекстное меню для каждого элемента QTreeView Отправлено: kryksyh от Февраль 22, 2013, 11:14 twp, _OLEGator_, спасибо, сейчас попробую.
Жаль что нет роли для контекстного меню, было б здорово. Название: Re: Различное контекстное меню для каждого элемента QTreeView Отправлено: carrygun от Февраль 22, 2013, 11:34 Есть еще вариант с сигналом Код
Вот про это забыл. |