142 / 20 / 2
Регистрация: 07.01.2016
Сообщений: 230
1

QPushButton - отключить нажатие на кнопку при нажатии клавиши

13.05.2017, 17:03. Показов 2686. Ответов 6
Метки нет (Все метки)

Добрый день! У меня есть программа которая определяет какую кнопку нажали.
На обычные кнопки все хорошо работает... Но например нажимаю на "Tab" и
QKeyEvent не видит нажатия + кнопки переключаются. Подскажите что делать!
QPushButton - отключить нажатие на кнопку при нажатии клавиши
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2017, 17:03
Ответы с готовыми решениями:

Нажатие на кнопку при нажатии клавиши Enter
Нужно чтобы после нажатия конпки ентер срабатывала кнопка допустим с id="but",если фокус стоит на...

Как эмулировать нажатие клавиши на клавиатуре при нажатии на кнопку UI в Unity
Здравствуйте, есть проблема, скачал из готовых ассетов управление для 2d персонажа, но управление...

При событии "Qt::Key_Space" происходит нажатие на кнопку QPushButton. Как отменить?
Доброго времени суток! Имеется интерфейс с множеством кнопок. При возникновения события нажатия на...

ListView пищит при нажатии клавиши. Как отключить?
Пишу в dev-cpp. Есть один единственный ListView. Если выделить какой-нибудь элемент и нажать букву...

6
7159 / 6134 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
13.05.2017, 18:52 2
А что надо делать? Есть зарезервированные клавиши.
1
142 / 20 / 2
Регистрация: 07.01.2016
Сообщений: 230
13.05.2017, 22:34  [ТС] 3
nmcf, надо нажать на клавишу Tab, но keyEvent его не чекает из за того что кнопки выделяются
0
7159 / 6134 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
14.05.2017, 07:30 4
Как нажатия определяешь?
1
142 / 20 / 2
Регистрация: 07.01.2016
Сообщений: 230
14.05.2017, 19:18  [ТС] 5
nmcf,
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
void CheckTheKeys::keyPressEvent(QKeyEvent *event)
{
    if(event->key()==Qt::Key_Backspace){
        ui->label->setText("Backspace");
    }
    else if(event->key()==Qt::Key_Space){
        ui->label->setText("Space");
    }
    else if(event->key()==Qt::Key_Alt){
        ui->label->setText("Alt");
    }
    // F KEY: F[1-12]
    else if(event->key()==Qt::Key_F){
        ui->label->setText("F");
    }
    else if(event->key()==Qt::Key_F1){
        ui->label->setText("F1");
    }
    else if(event->key()==Qt::Key_F2){
        ui->label->setText("F2");
    }
    else if(event->key()==Qt::Key_F3){
        ui->label->setText("F3");
    }
    else if(event->key()==Qt::Key_F4){
        ui->label->setText("F4");
    }
    else if(event->key()==Qt::Key_F5){
        ui->label->setText("F5");
    }
    else if(event->key()==Qt::Key_F6){
        ui->label->setText("F6");
    }
    else if(event->key()==Qt::Key_F7){
        ui->label->setText("F7");
    }
    else if(event->key()==Qt::Key_F8){
        ui->label->setText("F8");
    }
    else if(event->key()==Qt::Key_F9){
        ui->label->setText("F9");
    }
    else if(event->key()==Qt::Key_F10){
        ui->label->setText("F10");
    }
    else if(event->key()==Qt::Key_F11){
        ui->label->setText("F11");
    }
    else if(event->key()==Qt::Key_F12){
        ui->label->setText("F12");
    }
    else if(event->key()==Qt::Key_CapsLock){
        ui->label->setText("CapsLock");
    }
    else if(event->key()==Qt::Key_AltGr){
        ui->label->setText("Right Alt");
    }
    else if(event->key()==Qt::Key_Shift){
        ui->label->setText("Shift");
    }
    else if(event->key()==Qt::Key_Tab){
        ui->label->setText("Tab");
    }
    else if(event->key()==Qt::Key_Delete){
        ui->label->setText("Delete");
    }
    else if(event->key()==Qt::Key_Escape){
        ui->label->setText("ESC");
    }
    else if(event->key()==Qt::Key_Enter){
        ui->label->setText("Enter");
    }
    else if(event->key()==Qt::Key_Down){
        ui->label->setText("Down");
    }
    else if(event->key()==Qt::Key_Right){
        ui->label->setText("Right");
    }
    else if(event->key()==Qt::Key_Left){
        ui->label->setText("Left");
    }
    else if(event->key()==Qt::Key_Up){
        ui->label->setText("Up");
    }
    else if(event->key()==Qt::Key_NumLock){
        ui->label->setText("NumLock");
    }
    else if(event->key()==Qt::Key_SysReq){
        ui->label->setText("prt sc/sysrq");
    }
    else if(event->key()==Qt::Key_NumLock){
        ui->label->setText("NumLock");
    }
    else{
        ui->label->setText(event->text());
    }
    qDebug() << event->text() << " | Название клавиши";
    qDebug() << event->text() << " | Код клавиши";
    if(event->text()==key_){
        check();
        check_key = true;
    }
    else{
        if(key_=="Shift"){
            if(event->key()==Qt::Key_Shift){
                check();
                check_key = true;
            }
        }
        else if(key_=="CapsLock"){
            if(event->key()==Qt::Key_CapsLock){
                check();
                check_key = true;
            }
        }
        else if(key_=="Tab"){
            if(event->key()==Qt::Key_Tab){
                check();
                check_key = true;
            }
        }
        else if(key_=="Alt"){
            if(event->key()==Qt::Key_Alt){
                check();
                check_key = true;
            }
        }
        else if(key_=="Backspace"){
            if(event->key()==Qt::Key_Backspace){
                check();
                check_key = true;
            }
        }
        else if(key_=="Up"){
            if(event->key()==Qt::Key_Up){
                check();
                check_key = true;
            }
        }
        else if(key_=="Down"){
            if(event->key()==Qt::Key_Down){
                check();
                check_key = true;
            }
        }
        else if(key_=="Left"){
            if(event->key()==Qt::Key_Left){
                check();
                check_key = true;
            }
        }
        else if(key_=="Right"){
            if(event->key()==Qt::Key_Right){
                check();
                check_key = true;
            }
        }
        else{
 
        }
    }
 
}
0
зомбяк
1556 / 1195 / 339
Регистрация: 14.05.2017
Сообщений: 3,883
14.05.2017, 19:28 6
Лучший ответ Сообщение было отмечено dpytaylo как решение

Решение

dpytaylo, в описании ж сказано, что по Tab и Shift Tab эвентов не образуется, возникаю лишь QFocusEvent, по ним видимо и нужно будет ловить (что именно от клавиш - по QFocusEvent::reason())
0
142 / 20 / 2
Регистрация: 07.01.2016
Сообщений: 230
14.05.2017, 23:00  [ТС] 7
TRam_, ага спасибо!
0
14.05.2017, 23:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2017, 23:00

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

Скрыть и отключить кнопку при запуске ее обработчика(нажатии)
Нужно такое сделать, чтобы исключить повторное нажатие кнопки, пока загружается страница.

Надо что бы цикл закрывался при нажатии клавиши, но само нажатие не требовалось
Мне нужно кое что сделать с циклом (DEV C++!!). Надо что бы цикл закрывался при нажатии клавиши,...

Как отследить статус клавиши CTRL при нажатии на кнопку ToggleButton?
Нужно при нажатии ToggleButton поймать - нажата ли в этот момент клавиша контрол и в соответсвии с...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru