如何在单个事件中获得多个按键?

Sun*_*hah 9 qt

我正在创建一个应用程序,其中"左箭头+向下箭头"按下具有不同的行为(它与第一个左箭头和左箭头不同),目前在keyPressEvent事件中我在两个单独的调用中逐个获取它们.

有什么方法可以在一个键盘事件中获得多个按键吗?

Sun*_*hah 9

我通过下面的代码解决了这个问题.

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)


Pau*_*aul 8

谢谢你.我发布了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)