我在Qt Creator中创建了一个表单,并在表单中添加了三个自定义渲染器(它们都是同一个QWidgets类)。我希望当用户按下Alt键时,表单之外的所有三个小部件都能得到通知,但目前我甚至不能让一个小部件工作。
我将void keyPressEvent(QKeyEvent *)和void keyReleaseEvent(QKeyEvent *)添加到渲染器类中,但根本没有调用这些函数……(未触发断点)按键功能受到保护。
void Renderer::keyPressEvent(QKeyEvent *event) {
switch(event->key()) {
case Qt::Key_Alt: {
isAltPressed = true;
cout << "alt got pressed" << endl;
break;
}
default:
break;
}
}
void Renderer::keyReleaseEvent(QKeyEvent *event) {
switch(event->key()) {
case Qt::Key_Alt: {
isAltPressed = false;
cout << "alt released" << endl;
break;
}
default:
break;
}
}我是不是漏掉了什么?
另外,为了让所有三个小部件同时注册键盘按键,我需要做什么特殊的事情吗?
非常感谢。
发布于 2010-11-22 08:26:47
你的focusPolicy是多少?键盘事件将只转到具有焦点的小部件(然后您可以自己调用其他处理程序)。
https://stackoverflow.com/questions/4241262
复制相似问题