crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в флаг установил, а обратно не убрать
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 17.9.2010, 23:48
 
Цитата(Daan @ 18.9.2010, 0:52) *
Только я немого не понял, почему флаги перечисляются через оператор |
потому-что в описании flags Qt::ItemFlags сказано:
Цитата
Тип ItemFlags - это typedef для QFlags<ItemFlag>. Он хранит комбинацию значений (по ИЛИ) для ItemFlag.
Алексей1153 Дата 17.9.2010, 21:12
  Daan, это не мой способ, это побитовые операции )

Кстати, установку флага лучше делать не так
eoo.setFlags(Qt::ItemIsSelectable);

а так
eoo.setFlags(eoo.flags()|Qt::ItemIsSelectable);

- тогда старые флаги не очищаются

Цитата(Daan @ 17.9.2010, 23:52) *
Только я немого не понял, почему флаги перечисляются через оператор


оператор | - это побитовое ИЛИ, оператор & - побитовое И , оператор ~ - это инверсия битов

Флаги не перечисляются, а соединяются в одно двоичное число

например, флаги имеют значения
f1==0x0001
f2==0x0002
f3==0x0004
f4==0x0008


результат логического сложения
(f1|f2|f3|f4) == 0x000F



за подробным описанием - сюда :)
http://ru.wikipedia.org/wiki/%D0%94%D0%B2%...%BD%D0%B8%D1%8F
Daan Дата 17.9.2010, 20:52
  Спасибо. Не знал.

Хотя вот счас попробовал ваш способ, все равно к прежнему состоянию не вернулось. Потом после долгих поисков попробовал eoo.setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled); и тогда получилось. Только я немого не понял, почему флаги перечисляются через оператор |.
Алексей1153 Дата 17.9.2010, 20:23
  вот так можно
eoo.setFlags( eoo.flags() &= ~Qt::ItemIsSelectable )

Daan Дата 17.9.2010, 20:18
  QTableWidgetItem eoo;
eoo.setFlags(Qt::ItemIsSelectable);

И все, потом не знаю как флаг убрать. Нужно вернуть ячейку в прежнее состояние, когда можно вводить данные. Подскажите как.


Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 18.4.2024, 12:37