Код: Выделить всё
void
acquireDataDlg::adjustErgoSettings(QKeyCombination key, short ergo)
{
...... // local variables defined in top section
switch(key)
{
case (Qt::Key_A | Qt::ShiftModifier):
spdVal= (spdVal < 10 * ssss) ? 0.0 : (spdVal - 10 * ssss);
break;
case(Qt::Key_S | Qt::SHIFT):
spdVal+= 10 * ssss;
break;
default:
errOut=true;
break;
}
}
Поэтому я изменил эту строку на
Код: Выделить всё
switch(key.toCombined())
Но у меня все еще есть предупреждения о операторах case с комбинированным ключом + модификатором.
Я попробовал case (Qt::Key_A | Qt::ShiftModifier).tocombined(): то же предупреждение.
Я попробовал создать переменные, которые я мог бы использовать в операторах Case (у меня есть #include в верхней части код...)
Код: Выделить всё
QKeyCombination keyA_keyShift = QKeyCombination(Qt::Key_A,Qt::ShiftModifier);
QKeyCombination keyS_keyShift = QKeyCombination(Qt::Key_S,Qt::ShiftModifier);
Я обратился к Gemini за помощью, и он предложил структуру кода, которая выглядит следующим образом:
Код: Выделить всё
auto combination = event->keyCombination();
switch (combination.toCombined()) {
case (Qt::ControlModifier | Qt::Key_S).toCombined():
// Save action
break;
case (Qt::ControlModifier | Qt::Key_O).toCombined():
// Open action
break;
}
Я пробовал использовать серию операторов if, безрезультатно:
Код: Выделить всё
if (key.toCombined()==(Qt::Key_A | Qt::ShiftModifier)){
spdVal= (spdVal < 10 * ssss) ? 0.0 : (spdVal - 10 * ssss);
} else if (key.toCombined()==(Qt::Key_S | Qt::ShiftModifier)){
spdVal+= 10 * ssss;
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... -a-qtshift
Мобильная версия