Agradeceríamos tu apoyo para difundir nuestras crónicas sobre las ciencias informáticas.
Solución:
Ya estabas en el camino correcto mirando QKeySequence
ya que esto se puede utilizar para convertir entre string y key códigos:
QKeySequence seq = QKeySequence("SPACE");
qDebug() << seq.count(); // 1
// If the sequence contained more than one key, you
// could loop over them. But there is only one here.
uint keyCode = seq[0];
bool isSpace = keyCode==Qt::Key_Space;
qDebug() << keyCode << isSpace; // 32 true
QString keyStr = seq.toString().toUpper();
qDebug() << keyStr; // "SPACE"
agregado por OP
Lo anterior no admite modificador. keys como Ctrl, Alt, Shift, etc. Desafortunadamente, QKeySequence
no reconoce un Ctrl
key por sí mismo como un key. Entonces, para admitir el modificador keysdebes dividir el string representación usando el signo "+" y luego procesar por separado cada subcadena. La siguiente es la función completa:
QVector EmoKey::splitKeys(const QString &comb)
QVector keys;
const auto keyList = comb.split('+');
for (const auto &key: keyList)
if (0 == key.compare("Alt", Qt::CaseInsensitive))
keys << Qt::Key_Alt;
else if (0 == key.compare("Ctrl", Qt::CaseInsensitive))
keys << Qt::Key_Control;
else if (0 == key.compare("Shift", Qt::CaseInsensitive))
keys << Qt::Key_Shift;
else if (0 == key.compare("Meta", Qt::CaseInsensitive))
keys << Qt::Key_Meta;
else
const QKeySequence keySeq(key);
if (1 == keySeq.count())
keys << keySeq[0];
return keys;
Eres capaz de añadir valor a nuestra información aportando tu experiencia en las críticas.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)