2012-04-06 5 views
0

Мне нужно передать несколько ключей на основе нажатого состояния, чтобы активировать активность в Qt. сначала я пытался использовать QKeySequence для того, чтобы сделать то же самое, но, похоже, он не является динамическим.как создать серию ключей

keyPressEvent() { 
    if (keypress event) { 
    switch(keyevent->key()) { 
     Qt::Key_Alt: 
     "add this key to qkeysequence" 
     Qt::Key_Control: 
     "add this key to qkeysequence" 
     Qt::Key_Shift: 
     "add this key to qkeysequence" 
     Qt::Key_P: 
     "add this key to qkeysequence" 
    } 
    } 
    if (keyrelease event) { 
    switch(keyevent->key()) { 
     Qt::Key_Alt: 
     "remove this key from qkeysequence" 
     Qt::Key_Control: 
     "remove this key from qkeysequence" 
     Qt::Key_Shift: 
     "remove this key from qkeysequence" 
     Qt::Key_D: 
     "remove this key from qkeysequence" 
    } 
    } 

    handleKeySequence(qkeysequence); 
} 

handleKeySequence(qkeysequence) { 
    if (qkeysequence matches Qt::Key_Ctrl) do something 
    else if (qkeysequence matches Qt::Key_ctrl+Qt::Key_D) do something 
    .... other such sequences 
} 

однако QKeySequence не кажется, сделать что-нибудь там, и попытался еще несколько вариантов, и они не очень помогает либо.

любая помощь будет большой, спасибо.

ответ

0

Посмотрите на QShortcut

Также проверьте this post

+0

спасибо Ивану, на самом деле QShortcut не будет работать для меня, а другой пост, так и пройти через него, и это не помогло бы мне много ни ... то, что я хочу сделать, - это несколько пакетов с несколькими ключами в один контейнер и отправить их на компоненты diff, и они должны иметь возможность обрабатывать его на основе ключей. «QKeySequence» звучит отлично, просто я не могу изменить (добавить нажатие клавиши или удалить нажатие клавиши) после создания. – Ravi