我遇到Qt 4.6.0的问题和QPushButtons
的快捷方式:
我想在用户点击QTextEdit
时在button
中显示特殊文字,但只有在按下button
时,一旦发布,我想要另一个文字来吧。
一切正常但现在我想添加一个快捷方式(让我们说F1
)来执行完全相同的操作,当我按F1
时,它会显示QTextEdit
'中的特殊内容直到我释放key
。我该如何设法做到这一点?
我在button
添加了shortCut,但是当我按F1
时,它会闪烁,就像我按F1
一样,很多signals
正在当我按下QTextEdit
然后在我释放F1
时改回来......我希望我的key
更改...
我希望我的问题很明确!
提前感谢您的建议!
答案 0 :(得分:4)
我认为解决此问题的最简单方法是在父对象(窗口)上使用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);
}
}
答案 1 :(得分:2)
当鼠标,空格键或键盘快捷键激活时,按钮会发出clicked()信号。您必须处理按键和按键释放以执行您想要的操作。