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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как получить HWND окна виджета и его регион на нем?  (Прочитано 5145 раз)
Caduceus
Гость
« : Август 31, 2009, 21:31 »

Есть виджет. Он в конечном итоге на Виндузовом окне (пока другие платформы не рассматриваются). Так вот мне надо получить HWND этого окна, где именно располагается на нем виджет в координатах этого окна и знать, когда виджет сдвинулся (с ресайцзом понятно). Все это надо для дочернего окна - я прям поверх виджет дочернее окно создаю (не спрашивайте зачем)
Записан
k06a
Гость
« Ответ #1 : Август 31, 2009, 22:54 »

Вот это может поможет.
Цитировать
WId QWidget::winId () const

Returns the window system identifier of the widget.
Portable in principle, but if you use it you are probably about to do something non-portable. Be careful.
If a widget is non-native (alien) and winId() is invoked on it, that widget will be provided a native handle.

Note: We recommend that you do not store this value as it is likely to change at run-time.

Возможно понадобится вот этот атрибут:
Qt::AA_NativeWindows - Ensures that widgets have native windows.

Вот насчет позиции окна:
Цитировать
QRect QWidget::geometry;

This property holds the geometry of the widget relative to its parent and excluding the window frame.
When changing the geometry, the widget, if visible, receives a move event (moveEvent()) and/or a resize event (resizeEvent()) immediately. If the widget is not currently visible, it is guaranteed to receive appropriate events before it is shown.
The size component is adjusted if it lies outside the range defined by minimumSize() and maximumSize().

Warning: Calling setGeometry() inside resizeEvent() or moveEvent() can lead to infinite recursion.

See the Window Geometry documentation for an overview of window geometry.
By default, this property contains a value that depends on the user's platform and screen geometry.

Access functions:
const QRect & geometry () const
void setGeometry ( int x, int y, int w, int h )
void setGeometry ( const QRect & )

И всё-таки интересно зачем это?
Не проще ли внутри одного виджета менять всё в таком случае?
Каюсь - однажды пользовался:
Цитировать
void QMainWindow::setCentralWidget ( QWidget * widget )
Записан
Caduceus
Гость
« Ответ #2 : Сентябрь 01, 2009, 09:19 »

Ага, спасибо большое. Буду копать.

Цитировать
И всё-таки интересно зачем это?
Просто есть игровой движок. Он создается в окне. Я это окно и буду все время держать над нужным виджетом. Пытаться перегнать весь игровой движок на колеса Qt - это проще убиться об стену. Ответил?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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