我正在创建一个应用程序,其中"左箭头+向下箭头"按下具有不同的行为(它与第一个左箭头和左箭头不同),目前在keyPressEvent事件中我在两个单独的调用中逐个获取它们.
有什么方法可以在一个键盘事件中获得多个按键吗?
我通过下面的代码解决了这个问题.
QSet<Qt::Key> keysPressed;
void Widget::keyPressEvent(QKeyEvent * event) {
m_bFirstRelease = true;
keysPressed+= event->key();
}
void Widget::keyReleaseEvent(QKeyEvent *) {
if(m_bFirstRelease) {
processMultiKeys(keysPressed);
}
m_bFirstRelease = false;
keysPressed-= event->key();
}
Run Code Online (Sandbox Code Playgroud)
谢谢你.我发布了Python(PyQt)等价的代码,以便其他人可能会觉得它很有用.
def keyPressEvent(self, event):
self.firstrelease = True
astr = "pressed: " + str(event.key())
self.keylist.append(astr)
def keyReleaseEvent(self, event):
if self.firstrelease == True:
self.processmultikeys(self.keylist)
self.firstrelease = False
del self.keylist[-1]
def processmultikeys(self,keyspressed):
print keyspressed
Run Code Online (Sandbox Code Playgroud)