Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: TrimS от Января 29, 2014, 16:48



Название: QListWidget: как отследить mouse leave от дочернего элемента?
Отправлено: TrimS от Января 29, 2014, 16:48
Есть два вопроса по QListWidget. Какие его настройки:

Код:
m_List->setViewMode(QListView::IconMode);
m_List->setResizeMode(QListView::Adjust);
m_List->setSpacing(10);
m_List->setMouseTracking(true);
m_List->setDragEnabled(false);
connect(m_List, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(MouseMoveFocusChange(QListWidgetItem*)));
В MouseMoveFocusChange просто строчка item->setSelected(true);

Все элементы загружены со своими иконками.
А теперь вопросы:

1) Хотелось добиться, чтобы при прохождении мышки над элементом списка - этот элемент выделялся, а при уходе мышки выделение снималось. Первой цели удалось добиться - елемент выделяется когда на него налазит курсор. А как добиться чтобы выделение снималось, когда курсор уезжает с элемента?

2) Как словить mouse click вне елементов? (когда юзер кликает между элементами)


Название: Re: QListWidget: как отследить mouse leave от дочернего элемента?
Отправлено: carrygun от Января 30, 2014, 04:34
1) Тут проще всего решить стилями, смотри QSS, QListWidget::item:hover;

2) Тут 2 варианта:
    а - унаследоваться от QListWidget, переопределить mousePressEvent и бросать сигнал если по клику в координатах нет ни одного элемента (есть метод itemAt());
    б - прочитать про installEventFilter() (http://qt-project.org/doc/qt-4.8/qobject.html#installEventFilter) и так же использовать itemAt().


Название: Re: QListWidget: как отследить mouse leave от дочернего элемента?
Отправлено: TrimS от Января 30, 2014, 13:57
Спасибо! Просто был удивлён, что нет способа работать с событиями дочерних елементов QListWidget. Казалось, что это я плохо знаком с Qt. Оказалось что не казалось - ок, тогда действительно отнаследуюсь и добавлю свой сигнал.

Спасибо за помощь!