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

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

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

Author24 — интернет-сервис помощи студентам
Как закрыть программу из любого места при нажатии 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2014, 13:27
Ответы с готовыми решениями:

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

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

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

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

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

Пример отлавливания клавиш есть в доке: http://qt-project.org/doc/qt-4... ventFilter
1
7 / 7 / 0
Регистрация: 14.09.2013
Сообщений: 168
12.01.2014, 14:16  [ТС] 5
Цитата Сообщение от RazrFalcon Посмотреть сообщение
Пример отлавливания клавиш есть в доке: http://qt-project.org/doc/qt-4... ventFilter
Спасибо. То, что надо.
0
12.01.2014, 14:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2014, 14:16
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru