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

Ожидание нажатие клавиши с клавиатуры (мыши)

16.12.2018, 14:20. Показов 3062. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется программка, которая выводит некие значения (цифры). Основное окно - ввод параметров этих значений, а на создаваемой форме вывод данных чисел (массив). Так вооот. После того, как программа вывела все числа, нужно ввести некое ожидание нажатия клавиши (желательно любой), чтобы на экран появился результат (сумму массива). Нашел, что это можно сделать с помощью keyPressEvent, но не понял как именно это реализовать. Помогите люди добрые.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2018, 14:20
Ответы с готовыми решениями:

Присвоить кнопке нажатие клавиши с клавиатуры
В программе у меня создается кнопка Button *Calculator::createButton(const QString &text,...

Обработать нажатие клавиши клавиатуры и кнопки мыши в документе Word
Доброго времени суток! У меня возник вопрос: как можно обработать нажатие клавиши клавиатуры и...

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

Эмулировать нажатие кнопки мыши или нажатие клавиши на Web - странице
Здравствуйте. Как на эмулировать переходы по страницам на сайте, открытом в Интернет эксплорере!....

8
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
16.12.2018, 17:12 2
MyTh1c2L, я бы сделал просто кнопочку "получить сумму"
Но если вы хотите именно по любой клавише после заполнения, то обычно это делается так. Заводите булев флаг (в классе вашего окна, статическая переменная, глобальная - не суть). В начале ставите его в false. После заполнения - в true.
keyPressEvent проверяет этот флаг. false - ничего не делает. true - делает то, что вам нужно (вызывает соответствующий метод)
Возможно, это не единственный способ. Но мне кажется наиболее естественным.
1
0 / 0 / 0
Регистрация: 09.01.2016
Сообщений: 62
16.12.2018, 18:05  [ТС] 3
Окей, попробую.

Добавлено через 40 минут
А можно код с флагом и keyPressEvent? А то я туплю и не врубаюсь, как написать...
0
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
16.12.2018, 21:37 4
хедер:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
#include <QEvent>
#include <QKeyEvent>
 
.....
 
 
private:
    Ui::Widget *ui;
 
    bool eventFilter(QObject *obj, QEvent *event);
cpp:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//обработка прерываний клавиатуры
bool Widget::eventFilter(QObject *obj, QEvent *event)
{
 
    if (event->type() == QEvent::KeyPress)
    {
        QKeyEvent *keyEvent = static_cast <QKeyEvent *>(event);
        int ix = keyEvent->key();
 
        /*
        //тут можно посмотреть коды нажатых клавиш
        ui->label->setText(QString::number(ix));
        return true;
        */
 
        // обработка нажатых клавиш
        switch(ix)
        {
            case Qt::Key_Escape:     Press_Esc_Key();    return true;         //Esc = C
            case Qt::Key_Enter:       Press_Enter_Key();  return true;         //Enter
            case Qt::Key_Return:     Press_Enter_Key();  return true;         //Return
        }
   }
 
return QWidget::eventFilter(obj, event);
}
2
Байт
16.12.2018, 21:48
  #5

Не по теме:

alexu_007, спасибо вам, а то я уж думал, что придется отдуваться за то, что кинул идейку тому, кто не в силах ей воспользоваться... Если человек не понимает смысла работы флагов и не может написать простой keyEvent или eventFilter (а примеров и в книжках, и в документации - полно), то может ему еще рановато ставить такие задачи и пытаться их решить? Пусть пока хеллоуворды освоит...:)

0
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
16.12.2018, 22:49 6
Цитата Сообщение от Байт Посмотреть сообщение
Если человек не понимает смысла работы флагов и не может написать простой keyEvent или eventFilter (а примеров и в книжках, и в документации - полно), то может ему еще рановато ставить такие задачи и пытаться их решить? Пусть пока хеллоуворды освоит...
А-а-а... я сам не понимаю, как это работает... мне тоже где-то кто-то на форумах подсказал.
Статик каст, динамик каст, <QKeyEvent *>(event) - иероглифы какие-то. Но - работает. Значит, можно юзать.
0
683 / 458 / 160
Регистрация: 01.10.2015
Сообщений: 1,264
16.12.2018, 23:58 7
Цитата Сообщение от alexu_007 Посмотреть сообщение
А-а-а... я сам не понимаю, как это работает...

Не по теме:

Статья "The Event System" документации Qt состоит аж из шести абзацев текста... вы бы почитали, что ли. Написано вполне доступно, все-таки не учебник по квантовой физике.

0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
17.12.2018, 00:15 8
Но что такие "флаги" и как они работают, это-то можно понять и без 6-ти абзацев текста. Стандартный прием. Можно-Нельзя. Off-On. Чисто бытовая штука, в общем-то.

Добавлено через 9 минут
Самый "некрасивый" вариант. Но, имхо, достаточный, чтоб понять смысл
C++ (Qt)
1
2
3
4
5
6
7
8
bool flag = false; // глобально
....
if (можно считать сумму) flag = true;
....
keyPressEvent(...) {
  if (flag) ... // Подсчет и вывод суммы
 ...
}
1
0 / 0 / 0
Регистрация: 09.01.2016
Сообщений: 62
17.12.2018, 14:29  [ТС] 9
Всем спасибо, попробовал оба метода, оба работают Наверное, следовало сказать в начале, что я фактически только начал изучать Qt, и то посредством создание проги для проекта...
0
17.12.2018, 14:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2018, 14:29
Помогаю со студенческими работами здесь

Запись координат для клика и ожидание нажатия клавиши мыши
Здравия желаю. Я писал программу - кликер в которой мне нужно выполнить такую задачу: 1)Записать...

Как обработать нажатие клавиши мыши?
т.е. есть лента кадров, нужно по нажатию левой клавиши мыши остановить просмотр по нажатию правой...

Есть ли возможность определить нажатие клавиши / мыши?
Существует ли в матлабе приспособа для определения нажатия клавиши (аналог, например, в паскале –...

Как одновременно эмулировать нажатие кнопки мыши и клавиши?
Нужно сделать одновременную эмуляцию клика ЛКМ и к примеру Ctrl. Или чтобы Ctrl был зажат, и была...


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

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