Название: Подобие талицы из виджетов Отправлено: kdm от Август 01, 2010, 13:30 Вот другой вопрос меня очень волнует, как делать. Примерно представляю, но кажется слишком криво получится.
Дело в том, что хотел сделать одностолбцовую таблицу, в которой элементы - обычные виджеты, хранящие в себе другие виджеты (как на рисунке). И при том, когда пользователь кликает на любой элемент внутри виджета или на сам виджет, он бы выделялся цветной рамкой. Как так сделать? Как перехватить события о клике на элемент внутри виджета? Название: Re: Подобие талицы из виджетов Отправлено: Makss от Август 01, 2010, 13:35 через QScrollArea можно всё это сделать
Название: Re: Подобие талицы из виджетов Отправлено: kdm от Август 01, 2010, 15:02 Ну да, QScrollArea будет, но у меня проблемма с выделением так называемых айтемов этой таблицы, которые представляют собой самостоятельные виджеты. Как перехватывать событие клика на виджет и контролы внутри его и выделять виджет рамкой?
Название: Re: Подобие талицы из виджетов Отправлено: ecspertiza от Август 01, 2010, 16:33 Вот держи демку, не таблица ,но принцип похожий можно будет сделать.
Название: Re: Подобие талицы из виджетов Отправлено: kdm от Август 02, 2010, 10:44 Спасибо за пример. А как отлавливать событие того, чтобы кликнут компонент внутри видже (который представляет собой ячейку) без installEventFilter? Мне это нужно, если к примеру внутри виджета динамически добавляются новые компоненты, то для них тоже нужно устанавливать installEventFilter. А как обойтись без лишнего кода?
Название: Re: Подобие талицы из виджетов Отправлено: ufna от Август 02, 2010, 14:11 просто внутри этого виджета-айтема ловить клик, и менять ему стейт клика.
Название: Re: Подобие талицы из виджетов Отправлено: kdm от Август 02, 2010, 17:00 Сделал обратку клика в виджете-айтеме. Но если в виджет-айтем добавить QLineEdit, то клик перехватывается и ивент не выходит. Пробовал сделать с FocusPolicy. При клике на лейбел все робит, при клике на QLineEdit, снова LineEdit перехватывает ивент о фокусе. Не знаю, что и делать.
Название: Re: Подобие талицы из виджетов Отправлено: ufna от Август 02, 2010, 19:07 ловить момент передачи фокуса у всех виджетов-дитенышей?
Название: Re: Подобие талицы из виджетов Отправлено: kdm от Август 02, 2010, 20:51 придется переопределять классы, чтобы те генерили сигнал gotFocus? В принципе можно, но хотелось бы сделать универсально.
Название: Re: Подобие талицы из виджетов Отправлено: kdm от Август 03, 2010, 20:37 Приделал обработчик childEvent и при добавлении виджета устанавливаю фильтр installEventFilter и при QEvent::FocusIn устанавливаю рамку. Интересно, а если будет добавлен виджет, который сам родитель, его виджеты наверное не пройдут в обработчик?
Название: Re: Подобие талицы из виджетов Отправлено: ufna от Август 03, 2010, 21:10 да можно проще - в главном виджете, который типа список, ловить все нажатия мыши. Ловить, смотреть по положению на какой виджет "элемент списка" клик пришелся, и дальше передавать этот эвент, чисто посмотрев данные и от них - уже "выделить" нужный.
Название: Re: Подобие талицы из виджетов Отправлено: kdm от Август 03, 2010, 21:18 А как так сделать? Я пробовал переопределять mousePressEvent, но когда кликал по QLineEdit внутри виджета-айтема выполнение в обработчик не заходило. Есть вроде функция заграбить мышь, но не оч. представляю как надо тогда обрабатывать.
В принципе, можно и так оставить, я же не официальный класс разрабатываю, по этому для программы сойдет и так :) В любом случае, спасибо за советы :) |