我试图用Qt执行一个短击手,使用户能够洗手。 我希望,它具有互动性,这样一米会像目前所打的那样展现出捷径,而不仅仅是在完成的时候。 我认为,我不是远未解决问题的,但我仍有一些问题与元钥匙(Windows钥匙)有关。
第一种情况似乎会发现,如果使用假肢者功能的话语句如下,但不是最后的。
void ShortcutInputWidget::handleKeyEvent(QKeyEvent *event)
{
int keyDisplayed = event->key();
Qt::Key keys = static_cast<Qt::Key>(keyDisplayed);
// if the key pressed is only a modifier, we reset the key
if(keys == Qt::Key_Control ||
keys == Qt::Key_Shift ||
keys == Qt::Key_Alt ||
keys == Qt::Key_Meta)
{
qDebug() << "Single press of special key: Ctrl, Shift, Alt or Meta";
if (keys == Qt::Key_Meta)
qDebug() << "meta: " << QKeySequence(Qt::META);
keyDisplayed = 0;
}
// handle modifiers
Qt::KeyboardModifiers modifiers = event->modifiers();
QString text = event->text();
qDebug() << text;
if (modifiers & Qt::ShiftModifier){
keyDisplayed |= Qt::SHIFT;
qDebug() << "shift modifier detected";
}
if (modifiers & Qt::ControlModifier){
keyDisplayed |= Qt::CTRL;
qDebug() << "control modifier detected";
}
if (modifiers & Qt::MetaModifier){
keyDisplayed |= Qt::META;
qDebug() << "meta detected";
}
if (modifiers & Qt::AltModifier){
keyDisplayed |= Qt::ALT;
qDebug() << "alt modifier detected";
}
qDebug() << QKeySequence(keyDisplayed);
setText(QKeySequence(keyDisplayed));
event->accept();
}
如果我只打了元钥匙,则产出为<代码>meta:QKeySequence(“Meta+”),但没有发现的<代码>meta>。 但是,如果我打上了“ctrl + meta”号,则这两张话都探测到了元钥匙。
我做了一些错误?
EDIT:我只想提及使用Windows 7的Im,我有一个EN-GB键盘