Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
 Аватар для theadamo86
7 / 7 / 0
Регистрация: 14.09.2013
Сообщений: 168

Как закрыть программу из любого места при нажатии ESC?

12.01.2014, 13:27. Показов 5811. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как закрыть программу из любого места при нажатии ESC? Для главного окна реализовал этот так:
C++ (Qt)
1
2
3
4
5
6
void MainWindow::keyPressEvent(QKeyEvent *e)
{
    if(e->key() == Qt::Key_Escape) {
        this->close();
    }
}
и это работает.
Для виджета QWebView пытаюсь сделать так:

C++ (Qt)
1
2
3
4
5
6
7
ui->webView->installEventFilter(this);
bool MainWindow::eventFilter(QObject *, QEvent *e)
{
    if(e->KeyPress == Qt::Key_Escape)
        this->close();
    return true;
}
Но это не работает - приложение не закрывается, когда фокус на виджете webView и при сборке выходят 2 сообщения:
comparison of two values with different enumeration types ('QEvent::Type' and 'Qt::Key') [-Wenum-compare]
if(e->KeyPress == Qt::Key_Escape)
comparison of constant 'Key_Escape' (16777216) with expression of type 'QEvent::Type' is always false [-Wtautological-constant-out-of-range-compare]
if(e->KeyPress == Qt::Key_Escape)
Насколько я понял e->KeyPress == Qt::Key_Escape всегда будет ложным. Что делать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.01.2014, 13:27
Ответы с готовыми решениями:

Выход по Esc из любого места программы
Привет! Изучаю С++ на примере создания консольной программы. Типа - ввели данные, вывели данные. Вопрос - а как выйти из...

Вылазят левые вкладки при нажатии любого места на мониторе мышкой
Доброго времени суток. Ноут сошел с ума. Открываются левые вкладки при нажатии любого места на экране мышкой (реклама, казино и тд). При...

Как при нажатии на кнопку закрыть программу
Объясните пожалуйста, что писать в обработчике кнопки чтобы она выключала программу?

4
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
12.01.2014, 13:47
theadamo86, посмотрел в документации, в webView вроде бы тоже есть метод keyPressEvent(QKeyEvent * ev). Проверяем, есть ли фокус и нажатие, если да, то посылаем сигнал главному окну, чтобы оно закрылось.
0
 Аватар для theadamo86
7 / 7 / 0
Регистрация: 14.09.2013
Сообщений: 168
12.01.2014, 13:52  [ТС]
Цитата Сообщение от anubis1768 Посмотреть сообщение
theadamo86, посмотрел в документации, в webView вроде бы тоже есть метод keyPressEvent(QKeyEvent * ev). Если есть нажатие, то посылаем сигнал главному окну, чтобы оно закрылось.
Согласен. Но тогда мне придется для всех виджетов наследовать отдельные классы и реализовать перехват. У меня ведь там еще несколько виджетов (QPushButton, QTextEdit и т.д.). Поэтому хочу попробовать через eventFilter. Это будет более эффективно.
0
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
12.01.2014, 13:59
Все диалоги так по умолчанию по ESC закрываются, а отлавливать глобально можно и в MainWindow.

Пример отлавливания клавиш есть в доке: http://qt-project.org/doc/qt-4... ventFilter
1
 Аватар для theadamo86
7 / 7 / 0
Регистрация: 14.09.2013
Сообщений: 168
12.01.2014, 14:16  [ТС]
Цитата Сообщение от RazrFalcon Посмотреть сообщение
Пример отлавливания клавиш есть в доке: http://qt-project.org/doc/qt-4... ventFilter
Спасибо. То, что надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.01.2014, 14:16
Помогаю со студенческими работами здесь

Открыть закрыть блок при нажатии по ссылке и закрыть его при нажатии вне этого блока
Здравствуйте, несколько дней уже пытаюсь решить задачу, мне нужно сделать блок с авторизацией. Нужно что бы при нажатии на ссылку блок...

Организовать ,что при нажатии Enter входит в меню , а при нажатии Esc выходит с программы
Вот кусочек курсовой , помогите организовать такую вещь как при нажатии Enter входит в меню , а при нажатии Esc выходит с программы.Если...

Как выйти из цикла при нажатии клавиши ESC
Доброго времени дня. Поясните, как выйти из цикла при нажатии клавиши ESC void GetStr() { char *array_str; char str; int...

Как вернуть исходные данные в MaskedTextBox при нажатии Esc
При запуске формы в текстбоксах уже есть изначальные данные. Мне нужно что бы при изменении этих данных пользователем, при нажатии Esc...

При нажатии комбинации клавиш закрыть программу (нужен алгоритм)
Ребят, всем привет, я новичок и учусь программированию на ассемблере, помогите составить алгоритм который при нажатии комбинации клавиш...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru