2013-03-15 2 views
12

Get HWND on windows with Qt5 (from WId)에 대한 답변 중 하나에서 네이티브 윈도우 처리기를 복구하기 위해 QPlatformNativeInterface을 사용하는 것이 좋습니다.QT5 QPlatformNativeInterface 및 HWND

#include <QtGui/5.0.0/QtGui/qpa/qplatformnativeinterface.h> 

이것은 물론, 최종 솔루션으로 허용되지 않는 다음의 예는 전체 경로를 사용하여도

은 QT 헤더에 액세스하는 방법. QT의 기본 포함 시스템을 사용하여 QPlatformNativeInterface를 포함하는 방법이 있나요?

공지 사항 그 어느

#include <QPlatformNativeInterface> 

작품은 QPlatformNativeInterface의 전방 선언을 포함

#include <QGuiApplication> 

작품 ((이 파일은 기본 QT 빌드하는 동안 생성되지 않습니다))

답변

1
검색으로

는 조금 더 QPlatformNativeInterface은 현재 비공개이며,이 라이브러리가 안정 될 때 Qt Platform Abstraction의 일환으로 공개 될 것으로 보인다.

9

당신은

#include <qpa/qplatformnativeinterface.h> 

작동합니다 (적어도 나를 위해 작동) 다음

QT += gui-private 
example plugin 같이 프로젝트 파일에

, 등을 사용할 수 있습니다.

이러한 API는 실제로 개인,하지만 당신이 그들을 사용하는 경우,이 각각의 버전에 대한 #ifdef을 추가하는 것보다 더 나은 것 같다. 보통은 소스 파일을 포함하는 사용 후

find_package(Qt5Gui) 
include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS}) 

과 :

+0

대해 외부 빌드 시스템을 볼 수 있도록, 당신에게 유효한 HWND를 반환? – Pierluigi

+0

나는 CMAKE에 익숙하지 않다. :(그러나 나는 당신이 Makefile에 -I [include_path]/QtGui/[version]/QtGui를 추가 할 수있는 방법을 찾아야한다고 생각합니다. 아마도 qmake 소스를 보면 도움이 될 것입니다 ... – jkozera

6

은 CMake를 들어, 다음을 사용해야합니다

#include <qpa/qplatformnativeinterface.h> 
0

사실 winId() 잘 작동해야하지만, 이 HWND가 UPON 요청으로 생성 될 것이라는 사실을 명심해야합니다 (연결된 답변에 언급되지 않음). 즉, 모든 것을 처리 Qt는 그 소유자의 그리기 기능을 사용하여 표준 창을 생성하지 않는, 작동 방법 (당신은 MSDN에서 당신 스파이 예를 들어이를 볼 수 있습니다)하지만, 최대한 빨리 HWND를 요구하는대로 적절한 엔티티를 생성하고 스파이 (당신은 표준 위젯이 시도 할 수 있습니다) 것이 CMAKE처럼