2014-09-22 4 views
0

Я реализую всплывающий список с QListWidget. Но я обнаружил, что выбор списка выполняется, когда мышь нажата на элемент. Но то, что я хотел бы, это выбор по клику. Как я могу его изменить? (Без делегата)Как управлять выбором QListWidget

Update:

У меня есть подкласс QListWidget. Выбор этого списка выполняется (излучение сигнала, изменение selectedItems(), изменение Qss QListWidget :: item: selected {} и т. Д.), Когда я держу левую кнопку на элементе. Я хочу сделать эти изменения, когда выпустите мышь на элемент, а не нажмите и удерживайте ее.

+1

подклассификация QListWidget – niyou

+0

@niyou Да, это то, что я сделал. Но как я могу контролировать поведение выбора. –

ответ

0

QListWidget выполняет функции setSelectionMode и setSelectionBehaviour. Если это не то, что вы ищете, объясните более четко то, что вы пытаетесь достичь.

В ответ на обновление вопроса вам нужно будет обрабатывать события мыши виджета, чтобы предотвратить выбор, когда происходит событие mouse down (не вызывайте функцию базового класса), а затем решайте настройку выбора самостоятельно, в ответ на события выпуска мыши.

Поскольку QListWidget - это класс удобства с внутренней моделью, вам лучше использовать QListView, что позволит вам манипулировать его selection model.

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

+0

Ty для вашего комментария. Plz см. Мое обновление. –

+0

@MikeShaw, обновленный ответ, в ответ. – TheDarkKnight

+0

Да, есть много странных действий, когда я перестаю использовать функции по умолчанию в обработчике событий. Я перейду в QListView. Ty. –

Смежные вопросы