Мне нужно сделать это для настройки моего приложения. У меня есть поле QLineEdit с переопределенным методом keyPressEvent.
QKeyEvent *ke = ...
QString txt;
if(ke->modifiers() & Qt::ControlModifier)
txt += "Ctrl+";
if(ke->modifiers() & Qt::AltModifier)
txt += "Alt+";
if(ke->modifiers() & Qt::ShiftModifier)
txt += "Shift+";
if(ke->key() >= Qt::Key_0 && ke->key() <= Qt::Key_9)
txt += ('0' + ke->key() - Qt::Key_0);
else if(ke->key() >= Qt::Key_A && ke->key() <= Qt::Key_Z)
txt += ('A' + ke->key() - Qt::Key_A);
ui->hotkeyEdit->setText(txt);
Но это решение может создавать ярлыки только с английскими символами. Например, когда я использую раскладку русской клавиатуры, этот код будет отображать одну и ту же последовательность, но с английским char, помещенным на ту же клавишу клавиатуры.