Russian Qt Forum
Июня 15, 2025, 09:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отловить Ctrl-C в gui  (Прочитано 3724 раз)
spirits25
Гость
« : Июня 06, 2012, 16:34 »

Доброе время суток.
Есть любой виджет.. абсолютно произвольный. запускаю программу из консоли. по нажатию комбинации ctrl-c ничего не происходит до любого действия. а лишь потом:
Код:
^CTraceback (most recent call last):
  File "/usr/lib64/python2.7/site-packages/fffff/ffffff/fff.py", line 124, in mousePressEvent
    def mousePressEvent(self, event):
KeyboardInterrupt
вылетает прерывание на том действии. Как отловить знаю, но в таком случае не понятно где, ведь действие может быть любое. Собственно что нужно делать, чтобы ctrl-c сразу можно было отловить?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июня 06, 2012, 17:45 »

по идее достаточно повесить eventFilter на qApp - через него проходят все события
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
spirits25
Гость
« Ответ #2 : Июня 07, 2012, 08:10 »

по идее достаточно повесить eventFilter на qApp - через него проходят все события
Если Вы имели ввиду переопределить QtGui.QApplication и там в eventFilter отлавливать (точнее переопределить в нём один метод eventFilter), то не помогло. Или я не так понял?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Июня 07, 2012, 12:26 »

не совсем. если ты решил идти через наследование, то лучше уж переопределять метод event(). а если хочешь именно eventFilter, тогда в конструкторе какого-нибудь класса надо написать qApp->installEventFilter(this) и наследоваться от QApplication не нужно.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
spirits25
Гость
« Ответ #4 : Июня 07, 2012, 14:18 »

не совсем. если ты решил идти через наследование, то лучше уж переопределять метод event(). а если хочешь именно eventFilter, тогда в конструкторе какого-нибудь класса надо написать qApp->installEventFilter(this) и наследоваться от QApplication не нужно.
от qApp->installEventFilter(this) вообще ничего не меняется.
от "переопределять метод event()" все прерывания срабатывают в одном месте (уже хорошо), но всё равно не могу отловить, так как срабатывает в объявлении функции (в первой строке), где прерывание не отловить.
Код:
Traceback (most recent call last):
  File "/usr/bin/wwww", line 22, in event
    def event(self, e):
KeyboardInterrupt
Как можно там поймать её?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 3.11 секунд. Запросов: 23.