2013-03-15 26 views
12

Yerel pencere işleyicisini kurtarmak için Get HWND on windows with Qt5 (from WId) yanıtlarından birinde QPlatformNativeInterface kullanılması önerilir.QT5 QPlatformNativeInterface ve HWND

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

Bu, tabii ki, kesin bir çözüm olarak kabul edilebilir değildir: örneğin tam yolu kullanır da

QT başlığını erişmek için. QT'nin varsayılan dahil etme sistemini kullanarak QPlatformNativeInterface'u dahil etmenin bir yolu var mı?

Bildirimi ki, ne

#include <QPlatformNativeInterface> 

eserler sadece QPlatformNativeInterface bir ileri bildirim içeriyor

ne de

#include <QGuiApplication> 

eser ((bu dosya varsayılan QT inşa sırasında oluşturulmaz))

cevap

1

Biraz daha fazla arama yaparak QPlatformNativeInterface şu anda özel ve bu kitaplık stabilize olduğunda Qt Platform Abstraction'un bir parçası olarak halka açılacaktır.

9

sadece

#include <qpa/qplatformnativeinterface.h> 

çalışması gerekir (en azından benim için çalışıyor) daha sonra

QT += gui-private 
example plugin gibi proje dosyasında

, ve kullanabilirsiniz.

Bu API'lar gerçekten gizlidir, ancak bunları kullanmak zorundaysanız, bu her sürüm için bir #ifdef eklemekten daha iyidir. Normal kaynak dosyası için kullanıyorum, örneğin ardından

find_package(Qt5Gui) 
include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS}) 

ve:

+0

CMAKE gibi harici yapı sistemi hakkında ne olacak? – Pierluigi

+0

CMAKE ile aşina değilim. :(Ama sanırım, Makefiles'e -I [include_path]/QtGui/[version]/QtGui eklemek için bir yol bulmalısın. Belki de qmake kaynaklarına bakmak yardımcı olabilir ... – jkozera

6

CMake için, bu kullanmak gerekecektir

#include <qpa/qplatformnativeinterface.h> 
0

Aslında winId() sorunsuz çalışır, ANCAK sen akılda tutulması gereken bir gerçektir (ki buna bağlantılı bir cevapta bahsedilmemiştir), bu HWND'nin UPON talebi oluşturulacağıdır. Bu, Qt'nin işleyiş şeklidir, sahiplerinin sahip olduğu olanaklardan yararlanır ve her şey için standart pencere tutamaçları oluşturmaz (örneğin MSDN'den Spy'ı görebilirsiniz), ancak HWND'yi istediğin anda uygun bir varlık yaratacaktır. geçerli bir HWND döndürün, bu yüzden Spy için görünür olacaktır (bunu herhangi bir standart widget üzerinde deneyebilirsiniz)

İlgili konular