Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Пытон от Декабрь 04, 2011, 12:02



Название: Как определить нажатие на клавишу? Допустим для QListWidget.
Отправлено: Пытон от Декабрь 04, 2011, 12:02
На клавиатуре нажимается клавиша del, в ответ удаляем текущий элемент списка. Как узнать что del была нажата? Какой сигнал обрабатывать?


Название: Re: Как определить нажатие на клавишу? Допустим для QListWidget.
Отправлено: panAlexey от Декабрь 04, 2011, 12:48
На клавиатуре нажимается клавиша del, в ответ удаляем текущий элемент списка. Как узнать что del была нажата? Какой сигнал обрабатывать?
virtual void    keyPressEvent ( QKeyEvent * event )
virtual void    keyReleaseEvent ( QKeyEvent * event )


Название: Re: Как определить нажатие на клавишу? Допустим для QListWidget.
Отправлено: Пытон от Декабрь 04, 2011, 16:59
Ещё бы понять как этим пользоваться. Это ведь не сигнал. Как я должен поймать это событие? Как связать его с процедурой-обработчиком?

Желателен пример на питоне, но не обязательно на нём.


Название: Re: Как определить нажатие на клавишу? Допустим для QListWidget.
Отправлено: kambala от Декабрь 04, 2011, 17:11
почитай немножко документацию. это просто protected-метод.


Название: Re: Как определить нажатие на клавишу? Допустим для QListWidget.
Отправлено: Пытон от Декабрь 05, 2011, 04:20
Ежели кому не в тягость, пример кода, пожалуйста. Желательно на питоне.


Название: Re: Как определить нажатие на клавишу? Допустим для QListWidget.
Отправлено: Пытон от Декабрь 05, 2011, 16:48
И-эх... У меня есть учебник по PyQT, в нём немного описаны эти события, но для ООП. И что-то я в них не въезжаю. Примерчик, плиз?  :'(


Название: Re: Как определить нажатие на клавишу? Допустим для QListWidget.
Отправлено: kambala от Декабрь 05, 2011, 18:05
так трудно погуглить (http://lmgtfy.com/?q=pyqt+keypressevent)? вторая ссылка выдаёт нужный результат:
Код
Python
def keyPressEvent(self, e):
   if e.key() == QtCore.Qt.Key_Escape:
       self.close()
Цитировать
If we click the escape button, the application terminates.
естественно, этот метод должен быть определён в классе.


Название: Re: Как определить нажатие на клавишу? Допустим для QListWidget.
Отправлено: Пытон от Декабрь 06, 2011, 10:24
Я пока не использую классы. Пока. В будущем, конечно же, буду.
В бесклассовом обществе программировании можно как-то поймать нажатие на клавишу на виджете?


Название: Re: Как определить нажатие на клавишу? Допустим для QListWidget.
Отправлено: kambala от Декабрь 06, 2011, 10:37
нельзя. Qt построена на классах. без них можно только показать виджеты с минимумом предварительной их настройки.