Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: _sdn_ от Апрель 06, 2013, 00:32



Название: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: _sdn_ от Апрель 06, 2013, 00:32
в общем имею форму  на ней расположены 4 дочерних виджета , задача получить координаты расположения дочерних элементов относительно главной формы до вывода на экран.


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: Day от Апрель 06, 2013, 11:52
Да, интересно...
geometry() срабатывает только после show()


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: Bepec от Апрель 06, 2013, 13:03
Поэтому надо использовать showEvent.


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: Day от Апрель 06, 2013, 16:13
А можно так
Код:
w->show();
QRect r = w->geometry();
w->hide();
...
w->show();


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


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: _sdn_ от Апрель 06, 2013, 17:50
Day
show , hide ,show  не возьмусь на все 100 утверждать ,но думаю будет мерцать, это не вариант, так как эти дочерние виджеты возможно будут накрыты другими .


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: kambala от Апрель 06, 2013, 18:02
можно узнать зачем это нужно? может ты неправильно подходишь к решению возникшей проблемы.


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: _sdn_ от Апрель 06, 2013, 18:12
суть дела в следующем, прикрутить к gui Qt много поточность , каждое окно это отдельный поток, для упрощения задачи решил использовать средства предоставляемые Qt сигналы\слоты и прочее
все это дело под Windows .


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: RedDog от Апрель 06, 2013, 18:15
Хреновая идея


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: _sdn_ от Апрель 06, 2013, 18:24
ну пишу для себя и ради эксперимента ))


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: kambala от Апрель 06, 2013, 19:33
все графические элементы живут в основном потоке. ты хочешь одновременно выводить информацию в разные окна что ли?


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: _sdn_ от Апрель 06, 2013, 19:36
где то так


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: RedDog от Апрель 06, 2013, 19:57
Посылай сигналы из разных потоков в главный и не надо ниче городить.


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


Название: Re: опредилить координаты дочерних виджетов до их первоначального показа на форме
Отправлено: _sdn_ от Апрель 06, 2013, 21:55
тему можно считать закрытой.