dartNNN, повидимому я неправильно задаю вопрос … или не понимаю ответа …
Ваш пример показывает как связать пункт меню “Quit” с сиганлом нажатия хоткея “Ctrl+Q”, а я талдычу про другое … но может нет принципиальной разницы для моего случая
Лучше продемонстрировать что я хочу получить
см.
код из поста
#10кстати,
dartNNN, Вы же сами его редактировали…
ВАРИАНТ 1
в классе
WindowSlctnList переопределил метод
keyPressEvent, т.е. добавил следющий код в область вдидимости класса
WindowSlctnList:
def keyPressEvent(self, event):
if event.key() == Qt.Key_Return :
self.selectName(self.lv.currentIndex())
Смущает то что пришлось переопределять закрытый метод
keyPressEvent базового класса
QWidget. Наверно это не совсем правильно и красиво, хотя и очень коротко.
ВАРИАНТ 2
в классе
WindowSlctnList в методе
__init__ добавил следющий код:
# 1 - определяется новое абстрактное событие, типа синал, для представления lv
self.av = QAction(self.lv)
# 2 - назначаем хоткеем [Enter] по нажатию которого событие реализуется
self.av.setShortcut(Qt.Key_Return)
# 3 - назначаем слот в случае реализации события
self.av.triggered.connect(self.selectPress)
# 4 - активация процесса отслеживания события
self.addAction(self.av)
а также пришлось определить новый метод
selectPress для класса
WindowSlctnList:
def selectPress (self):
self.selectName(self.lv.currentIndex())
Напрямую слотом
selectName воспользоваться не могу т.к. сигнал
void triggered ( bool checked = false ) наследуется от
QAction, как видим здесь параметром выступает флаг проверки.
2-й вариант конечно избыточен по коду, но при этом не переопределяется защищеная функция
Приложение показывает виджет в виде списка, при клике на мыши в области какого либо пункта списка отрабатывает слот
selectName.
Также есть возможность перемещаться по списку с помощью клавиш
Up(стрелка вверх) и
Down(стрелка вниз) на клавиатуре, т.е. выбирать пункты списка, а также активировать слот
selectName нажатием клавиши на выбранном пункте списка.
Не знаю что предпочтительнее, а может есть поинтереснее решение ?
Правильное решение прошу показать в виде кода.