Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: ecspertiza от Июль 17, 2009, 08:21



Название: Организовать выделение.
Отправлено: ecspertiza от Июль 17, 2009, 08:21
Всем привет, граждане программисты нужна ваша помощь ,есть интерфейс

http://pic.ipicture.ru/uploads/090717/maZ3pF6TIv.jpg

на нем грубо говоря таблица

http://pic.ipicture.ru/uploads/090717/0h6r1S33kb.jpg

и есть Item таблицы

http://pic.ipicture.ru/uploads/090717/itqS6LODSh.jpg

Нужно сделать так что при клике мышой на Item он выделялся как то, какие события с мышью и кликом обрабатывать я знаю, а вот само выделение как организовать? Item это класс наследованный от QFrame, я вижу два варианта выделения.

1. Это есть какая то встроенная функция(если есть скажите какая) :)
2. Это самому закрашивать background Итема, но тут есть одно но, обычно выделение делается прозрачно синим цветом, вот как его сделать? И background таблицы может быть обсалютно разным в зависимости от настроек :)

Подскажите как лудше решить, или может есть еще способ?


Название: Re: Организовать выделение.
Отправлено: lit-uriy от Июль 17, 2009, 08:27
Обработка выбора элементов в представлениях (http://doc.crossplatform.ru/qt/4.4.3/model-view-selection.html)


Название: Re: Организовать выделение.
Отправлено: ecspertiza от Июль 17, 2009, 08:38
Боюсь что это немного не то, т.к. то что я назвал таблицей это понятие абстрактное, на самом деле там обычный Widget а Item`ы создаются по формуле.


Название: Re: Организовать выделение.
Отправлено: ритт от Июль 17, 2009, 10:13
луДше перечитай статью.


Название: Re: Организовать выделение.
Отправлено: ufna от Июль 17, 2009, 10:27
Если без модель/вью то:

- У каждого элемента есть стейт - селектед или не селектед
- обрабатываешь клик мышкой, узнавая какому виджету принадлежит точка нажатия или сразу в нем евент этот ловишь
- делаешь виджет селектед
- если не попал в виджет, то делается он делесектед (если нужно выделение только одного за один раз)
- рисуешь сий виджет как тебе нужно, в зависимости от стейта

грубо говоря, так. Т.е. встроенных функций селекта виджетов нет, нужно писать свое.


А если как надо, то ссылка выше.


Название: Re: Организовать выделение.
Отправлено: ecspertiza от Июль 17, 2009, 10:33
Ну вот у меня без модель/вью, и я уже нечто подобное реализовал, работает нормально, только ещё вопрос как отловить клик мыши и одновременно зажатый  Ctrl ? в bool event() это можно поймать?


Название: Re: Организовать выделение.
Отправлено: spirit от Июль 17, 2009, 10:37
QMouseEvent + QApplication::keyboardModifiers.


Название: Re: Организовать выделение.
Отправлено: ecspertiza от Июль 17, 2009, 10:43
всем спасибо, разобрался :)