Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT4] Widget zOrder or BringToFront/Back, Отображение 2 накладывающихся виджетов 
:(
    Опции темы
SwordOfDeath
  Дата 23.12.2008, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



Привет,

Общая задача:
Нужен widget в котором нужно отображать много одинаковых сложных графических элементов, и анимировать движение этих элементов(положение и размер).
За незнанием возможностей Qt я решил создават дочерный widget который будет отрисовывать один элемент в зависимости от своих размеров, а внешний будет анимировать движение и размер этих виджетов...(К сожалению я не уверен в эффективности данной архитектуры, может вы подскажите идею получше)

И столкнулся с проблемой, каким образом возможно упорядочить эти виджеты? Что-то наподобие zOrder или BringToFront/Back... По ассистенту ничего подобного не нашел...

PM MAIL   Вверх
SABROG
Дата 23.12.2008, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



void QWidget::lower () - помещает виджет в самый низ 
(скрывается за всеми виджетами)
void QWidget::raise () - помещает виджет на самый верх 
(другие виджеты больше не скрывают его за собой)
void QWidget::stackUnder ( QWidget * w )- помещает виджет над окном, 
которое передается как указатель w.

А также:
const QObjectList & QObject::children () const
- для классов QWidget возвращает список дочерних окон в порядке
их добавления на виджет (последнее добавленное окно - первый элемент). Если до получения списка была применена 
операция lower() или raise(), то это отражается на порядке элементов
в списке. После raise() окно будет первым элементом, после lower()
- последним.

Отсюда получается, чтобы поставить окно в нужную позицию на стеке
придется получить указатель нужного окна с индекса в QObjectList
и применить операцию stackUnder() для выбранного окна. Или опускать/поднимать окна через lower()/raise() до тех пор, пока нужное окно не окажется по нужному тебе индексу.

Это сообщение отредактировал(а) SABROG - 23.12.2008, 18:33


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
SwordOfDeath
  Дата 23.12.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



О боги! Откуда вы все знаете = )
Именно то что нужно!

PM MAIL   Вверх
SABROG
Дата 23.12.2008, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(SwordOfDeath @ 23.12.2008,  18:41)
О боги! Откуда вы все знаете = )
Именно то что нужно!

А я и не знаю, это все Assistant да Google. Меня ночью разбуди, я не вспомню как main.cpp написать не подглядывая  smile 


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
pan2004
Дата 25.12.2008, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



Цитата(SwordOfDeath @  23.12.2008,  17:08 Найти цитируемый пост)
Нужен widget в котором нужно отображать много одинаковых сложных графических элементов, и анимировать движение этих элементов(положение и размер).

QGraphicsView?
Зачем все усложнять...


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.2319 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.