Russian Qt Forum
Ноябрь 05, 2024, 22:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Флаги, Сложение Qt::Modifiers  (Прочитано 4223 раз)
ammaximus
Гость
« : Март 22, 2013, 00:19 »

Чет никак не соображу как пользовать флагами, в частности подмножеством modifiers. Известен такой метод:
Код:
		case Qt::Key_S:
if(keyEvent->modifiers() & Qt::ControlModifier)
{
str = "MS";
}

Не оч понятно почему именно так. Мне нужно добица Ctrl+Alt. Тут надо добавить энд еще это понятно, а можно ли сделать это в рамках switch? Мне нужно перебрать все комбинации модификаторов, иф-елс будет неуклюже.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #1 : Март 22, 2013, 02:07 »

по идее так
Код
C++ (Qt)
switch (keyEvent->modifiers())
{
case Qt::ControlModifier | Qt::AltModifier:
   // Ctrl+Alt
   break;
}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ammaximus
Гость
« Ответ #2 : Март 23, 2013, 13:23 »

у меня так как раз и не работает, поэтому спрашиваю.
Код:
calls to overloaded operators cannot appear in a constant-expression
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #3 : Март 23, 2013, 13:55 »

ну введи целочисленную константу, которой и присвой это значение
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ammaximus
Гость
« Ответ #4 : Март 23, 2013, 14:07 »

Код:
const int CtrlAlt = Qt::ControlModifier | Qt::AltModifier;

case CtrlAlt:
[code]

Тоже самое cannot appear
[/code]
Записан
carrygun
Гость
« Ответ #5 : Март 23, 2013, 17:07 »

Так нельзя. Используйте enum'ы или тупое сравнение через if'ы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.086 секунд. Запросов: 22.