QPushButton&捷径

时间:2009-12-20 15:08:16

标签: qt keyboard-shortcuts

我遇到Qt 4.6.0的问题和QPushButtons的快捷方式:

我想在用户点击QTextEdit时在button中显示特殊文字,但只有在按下button时,一旦发布,我想要另一个文字来吧。

一切正常但现在我想添加一个快捷方式(让我们说F1)来执行完全相同的操作,当我按F1时,它会显示QTextEdit'中的特殊内容直到我释放key。我该如何设法做到这一点?

我在button添加了shortCut,但是当我按F1时,它会闪烁,就像我按F1一样,很多signals正在当我按下QTextEdit然后在我释放F1时改回来......我希望我的key更改...

我希望我的问题很明确!

提前感谢您的建议!

2 个答案:

答案 0 :(得分:4)

我认为解决此问题的最简单方法是在父对象(窗口)上使用installEventFilter(),并过滤掉QEvent::MouseButtonPressQEvent::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);
 }
}

答案 1 :(得分:2)

当鼠标,空格键或键盘快捷键激活时,按钮会发出clicked()信号。您必须处理按键和按键释放以执行您想要的操作。