Russian Qt Forum

Qt => Общие вопросы => Тема начата: mindz_eye от Апрель 09, 2007, 18:36



Название: non-clickable QListWidgetItem
Отправлено: mindz_eye от Апрель 09, 2007, 18:36
Собственно, сабж. Не получается сделать такое. Пробывал использывать флаги, ставить фильтр событий на QListWidget, переопределять его mousePressEvent - ничего не помогает. При клике по item'у он все равно выделяется =((


Название: non-clickable QListWidgetItem
Отправлено: goer от Апрель 09, 2007, 18:42
Assistant:
Цитировать

selectionMode : SelectionMode
This property holds which selection mode the view operates in.
This property controls whether the user can select one or many items and, in many-item selections, whether the selection must be a continuous range of items.
Access functions:
QAbstractItemView::SelectionMode selectionMode () const
void setSelectionMode ( QAbstractItemView::SelectionMode mode )


setSelectionMode( QAbstractItemView::NoSelection ) - это то что тебе нужно!


Название: non-clickable QListWidgetItem
Отправлено: mindz_eye от Апрель 09, 2007, 23:57
Да нет, мне нужно, чтобы часть элементов была некликабельна, а не все сразу.


Название: non-clickable QListWidgetItem
Отправлено: goer от Апрель 10, 2007, 08:57
Код:

QListWidgetItem *li = new QListWidgetItem();
li->setFlags( li->flags() & ~Qt::ItemIsSelectable );


Подобный вопрос уже поднимался на форуме, учитесь использовать поиск.


Название: non-clickable QListWidgetItem
Отправлено: mindz_eye от Апрель 10, 2007, 10:38
Еще раз. Флаги устанавливать пробывал. Не помогло. Нужно сделать следующее - чтобы часть item'ов была псевдо-заголовками. Т.е. по клику по ним selection с других не снимался.
Никаких собственных делегатов на список не устанавливал.


Название: non-clickable QListWidgetItem
Отправлено: goer от Апрель 10, 2007, 10:56
Значит устанавливай фильтр событий на итемы, который будет возвращать истину при mouseEvent-ах(так события не попадут к своим получателям).


Название: Re: non-clickable QListWidgetItem
Отправлено: mindz_eye от Апрель 10, 2007, 11:26
Цитата: "mindz_eye"
Собственно, сабж. Не получается сделать такое. Пробывал использывать флаги, ставить фильтр событий на QListWidget, переопределять его mousePressEvent - ничего не помогает. При клике по item'у он все равно выделяется =((

 :!:

Уточнение. При выставлении флага на QListWidgetItem оно работает так: selection действительно не устанавливается, но зато снимается со всех других элементов.
Попробую ловить сигнал cliked от QAbstractItemView. Он судя по коду отправляется до того, как selection изменяется.