Код: Выделить всё
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;
}
}
'constexpr QKeyCombination::operator int() const' устарел. Используйте QKeyCombination вместо int.
Поэтому я изменил эту строку на следующую:
Код: Выделить всё
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
Мобильная версия