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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как установить флаг видимости для элемента сцены ?  (Прочитано 4450 раз)
AntonUfo
Гость
« : Февраль 14, 2011, 15:44 »

Всем привет ! Собственно subj ? Если устанавливать через item->setVisible(false); то элемент перестает ловить сигналы...
понял только что вроде как через флаги правильно делать но непонимаю как....

« Последнее редактирование: Февраль 14, 2011, 16:34 от AntonUfo » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Февраль 14, 2011, 16:08 »

QGraphicsItem::setFlag( QGraphicsItem::ItemHasNoContents, !is_visibled );
Записан

Qt 5.11/4.8.7 (X11/Win)
AntonUfo
Гость
« Ответ #2 : Февраль 14, 2011, 16:27 »

Пытаюсь сделать через такую конструкцию:


Код:
	QList<QGraphicsItem *> itemss = scene->items();
QMutableListIterator<QGraphicsItem *> j(itemss);
   while (j.hasNext()) {
  Link *link = dynamic_cast<Link *>(j.next());
    if (link && link->myNumberHolstLink == Holst){
j.setFlag(QGraphicsItem::ItemVisibleChange);
  }
}

не компилируется.....
« Последнее редактирование: Февраль 14, 2011, 16:51 от AntonUfo » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Февраль 14, 2011, 16:39 »

j.setFlag(QGraphicsItem::ItemVisibleChange); => link->setFlag(QGraphicsItem::ItemVisibleChange);

А что, свою писанину перед тем как на форум выкладывать внимательно посмотреть уже не судьба?
Записан

Qt 5.11/4.8.7 (X11/Win)
AntonUfo
Гость
« Ответ #4 : Февраль 14, 2011, 16:46 »

j.setFlag(QGraphicsItem::ItemVisibleChange); => link->setFlag(QGraphicsItem::ItemVisibleChange);

А что, свою писанину перед тем как на форум выкладывать внимательно посмотреть уже не судьба?

пробовал и так и так.... если через link->setFlag вот что пишет компилятор:
"
QGraphicsItem::setFlag: невозможно преобразовать параметр 1 из 'QGraphicsItem::GraphicsItemChange' в 'QGraphicsItem::GraphicsItemFlag'
Для преобразования в перечисляемый тип требуется явное приведение (static_cast, приведение в стиле С или приведение в стиле функции)
"

а по поводу писанины, не хочешь не отвечай, я тебя не заставляю.....
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Февраль 14, 2011, 16:55 »

Хм, а зачем вообще нужен QGraphicsItem::ItemVisibleChange, который используется в QGraphicsItem::itemChange()?
Чем не подходит QGraphicsItem::setFlag( QGraphicsItem::ItemHasNoContents, !is_visibled )?
Записан

Qt 5.11/4.8.7 (X11/Win)
AntonUfo
Гость
« Ответ #6 : Февраль 14, 2011, 17:19 »

Хм, а зачем вообще нужен QGraphicsItem::ItemVisibleChange, который используется в QGraphicsItem::itemChange()?
Чем не подходит QGraphicsItem::setFlag( QGraphicsItem::ItemHasNoContents, !is_visibled )?

ItemHasNoContents - элемент ничего не отрисовывает (т.е., вызов paint() на элементе не имеет эффекта). Вы должны установить этот флаг на элементах, которые не нужно отрисовывать, чтобы обеспечить избегания Графическим представлением ненужной подготовки к рисованию. Этот флаг был введён в Qt 4.6.

А мне нужно нарисованные элементы скрыть и нарисовать скрытые элементы.... мне ItemHasNoContents неподходит....

Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Февраль 14, 2011, 17:25 »

Цитировать
Если устанавливать через item->setVisible(false); то элемент перестает ловить сигналы...
Ты бы определился, что тебе нужно.
Записан

Qt 5.11/4.8.7 (X11/Win)
AntonUfo
Гость
« Ответ #8 : Февраль 14, 2011, 17:37 »

Цитировать
Если устанавливать через item->setVisible(false); то элемент перестает ловить сигналы...
Ты бы определился, что тебе нужно.

у меня на сцене нарисовано 10 кружочков, мне нужно скрыть пять, а потом три опять вывести на экран..., если делать через
item->setVisible(false) то итемы которые скрыты перестают ловить сигналы........ и мне их снова на представление сцены не вывести.....
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Февраль 14, 2011, 17:41 »

Цитировать
у меня на сцене нарисовано 10 кружочков, мне нужно скрыть пять, а потом три опять вывести на экран..., если делать через
item->setVisible(false) то итемы которые скрыты перестают ловить сигналы........ и мне их снова на представление сцены не вывести.....
item->setVisible(true);
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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