Russian Qt Forum

Qt => Общие вопросы => Тема начата: pakulo от Май 19, 2007, 17:16



Название: Вопрос больше по С++
Отправлено: pakulo от Май 19, 2007, 17:16
Вопрос больше по С++, но встречал я это в сорцах Qt.
Обьясните, пожалуйста, что значит даная запись.
QStyleOption *option;
option->state &= ~(QStyle::State_HasFocus | QStyle::State_MouseOver);


Название: Вопрос больше по С++
Отправлено: Gryz от Май 19, 2007, 17:22
в state хранится соcтояние, описанное битами - флажками. Скорее всего, это переменная типа int.
Данной операцией мы обнуляем биты, которые описывают состояния QStyle::State_HasFocus и QStyle::State_MouseOver. Потом эту информацию можно как-то использовать.


Название: Вопрос больше по С++
Отправлено: pakulo от Май 19, 2007, 19:44
а что означает данный значок ~?


Название: Вопрос больше по С++
Отправлено: vregess от Май 19, 2007, 22:15
Цитата: "pakulo"
а что означает данный значок ~?

option->state &= ~(QStyle::State_HasFocus | QStyle::State_MouseOver);
дпустим
option->state= 01100101

QStyle::State_HasFocus=00000000

QStyle::State_MouseOver= 01000000


QStyle::State_HasFocus | QStyle::State_MouseOver=
00000000
или
01000000
равно
01000000

~(QStyle::State_HasFocus | QStyle::State_MouseOver)=
10111111

option->state &= ~(QStyle::State_HasFocus | QStyle::State_MouseOver)=
01100101
и
10111111
равно
00100101

те мы просто убираем биты либо QStyle::State_HasFocus, либо QStyle::State_MouseOver (либо биты обоих) из option->state
это битовые операции


Название: Вопрос больше по С++
Отправлено: pakulo от Май 19, 2007, 23:56
Спасибо ОГРОМНОЕ!!!!!