QPushButton & ярлык - PullRequest
       8

QPushButton & ярлык

4 голосов
/ 20 декабря 2009

У меня проблема с Qt 4.6.0 и ярлыком для QPushButtons:

Я хочу отобразить специальный текст в QTextEdit, когда пользователь нажимает button, но только когда нажата button, как только он отпущен, я хочу, чтобы появился другой текст.

Все работает нормально, но теперь я хочу добавить ярлык (скажем, F1) для выполнения точно такой же операции, когда я нажимаю F1, он отображает что-то особенное в QTextEdit, пока я не отпущу key. Как мне это удается?

Я добавил ярлык на свой button, но когда я нажимаю F1, он мигает, как если бы я нажимал F1, много signals испускалось ... Я хочу, чтобы мой QTextEdit, чтобы изменить, когда я нажимаю F1, а затем изменить обратно, когда я отпускаю key ...

Надеюсь, мой вопрос ясен!

Заранее большое спасибо за советы!

Ответы [ 2 ]

4 голосов
/ 20 декабря 2009

Я думаю, что наиболее простым решением этой проблемы является использование installEventFilter() для родительского объекта (окна) и отфильтровывание событий QEvent::MouseButtonPress и QEvent::MouseButtonRelease.

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
 if (obj == textEdit) {
     if (event->type() == QEvent::KeyPress) {
         QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
         qDebug() << "Ate key press" << keyEvent->key();
         return true;
     } else {
         return false;
     }
 } else {
     // pass the event on to the parent class
     return QMainWindow::eventFilter(obj, event);
 }
}
2 голосов
/ 20 декабря 2009

Кнопка генерирует сигнал clicked (), когда она активируется мышью, пробелом или сочетанием клавиш. Вам придется обрабатывать нажатие клавиш и отпускание клавиш, чтобы делать то, что вы хотите.

...