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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: опредилить координаты дочерних виджетов до их первоначального показа на форме  (Прочитано 7154 раз)
_sdn_
Гость
« : Апрель 06, 2013, 00:32 »

в общем имею форму  на ней расположены 4 дочерних виджета , задача получить координаты расположения дочерних элементов относительно главной формы до вывода на экран.
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #1 : Апрель 06, 2013, 11:52 »

Да, интересно...
geometry() срабатывает только после show()
Записан
Bepec
Гость
« Ответ #2 : Апрель 06, 2013, 13:03 »

Поэтому надо использовать showEvent.
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #3 : Апрель 06, 2013, 16:13 »

А можно так
Код:
w->show();
QRect r = w->geometry();
w->hide();
...
w->show();
Записан
_sdn_
Гость
« Ответ #4 : Апрель 06, 2013, 17:45 »

Bepec
showEvent не проходит, пока что то более мене вразумительное удалось получит при установке фильтра сообщений и отлов QEvent::WindowActivate, главный виджет уже существует но еще не заполнен, по крайне мере отметил это дело на Windows, за другие не возьмусь утверждать , и манипуляции с ...->pos() , ... ->mapToGlobal(), ...->mapToParent() .
Записан
_sdn_
Гость
« Ответ #5 : Апрель 06, 2013, 17:50 »

Day
show , hide ,show  не возьмусь на все 100 утверждать ,но думаю будет мерцать, это не вариант, так как эти дочерние виджеты возможно будут накрыты другими .
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Апрель 06, 2013, 18:02 »

можно узнать зачем это нужно? может ты неправильно подходишь к решению возникшей проблемы.
Записан

Изучением 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
_sdn_
Гость
« Ответ #7 : Апрель 06, 2013, 18:12 »

суть дела в следующем, прикрутить к gui Qt много поточность , каждое окно это отдельный поток, для упрощения задачи решил использовать средства предоставляемые Qt сигналы\слоты и прочее
все это дело под Windows .
Записан
RedDog
Гость
« Ответ #8 : Апрель 06, 2013, 18:15 »

Хреновая идея
Записан
_sdn_
Гость
« Ответ #9 : Апрель 06, 2013, 18:24 »

ну пишу для себя и ради эксперимента ))
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #10 : Апрель 06, 2013, 19:33 »

все графические элементы живут в основном потоке. ты хочешь одновременно выводить информацию в разные окна что ли?
Записан

Изучением 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
_sdn_
Гость
« Ответ #11 : Апрель 06, 2013, 19:36 »

где то так
Записан
RedDog
Гость
« Ответ #12 : Апрель 06, 2013, 19:57 »

Посылай сигналы из разных потоков в главный и не надо ниче городить.
Записан
_sdn_
Гость
« Ответ #13 : Апрель 06, 2013, 21:54 »

в общем все, как всегда, оказалось проще простого.
Координаты отображения дочернего виджета, относительно главного, до показа на экране можно получить тремя строчками :
Код:
QPoint qp;
qp = pCHildWidget->mapToGlobal(pCHildWidget->pos());
qp = pCentralWidget->mapFromGlobal(qp);
Записан
_sdn_
Гость
« Ответ #14 : Апрель 06, 2013, 21:55 »

тему можно считать закрытой.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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