QT5 QPlatformNativeInterface和HWND

Pie*_*igi 14 hwnd wid qtgui qt5

使用Qt5(来自WId)的Windows上获取HWND的答案之一中,建议使用QPlatformNativeInterface以恢复本机窗口处理程序.

要访问QT标头,尽管示例使用其完整路径:

#include <QtGui/5.0.0/QtGui/qpa/qplatformnativeinterface.h>
Run Code Online (Sandbox Code Playgroud)

当然,这不是一个明确的解决方案.有没有办法使用QT的默认包含系统包含QPlatformNativeInterface

请注意,都没有

#include <QPlatformNativeInterface> 
Run Code Online (Sandbox Code Playgroud)

工作(在默认QT构建期间不生成此文件)

也不

#include <QGuiApplication>
Run Code Online (Sandbox Code Playgroud)

作品(仅包含QPlatformNativeInterface的前向声明 )

jko*_*era 10

您可以使用

QT += gui-private
Run Code Online (Sandbox Code Playgroud)

在您的项目文件中,如在示例插件中,然后只是

#include <qpa/qplatformnativeinterface.h>
Run Code Online (Sandbox Code Playgroud)

应该工作(至少对我有用).

这些API确实是私有的,但是如果你必须使用它们,我想这比#ifdef为每个版本添加一个更好.


小智 8

对于CMake,你必须使用它:

find_package(Qt5Gui)
include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
Run Code Online (Sandbox Code Playgroud)

然后使用源文件的普通包含:

#include <qpa/qplatformnativeinterface.h>
Run Code Online (Sandbox Code Playgroud)


Pie*_*igi 1

通过更多搜索,似乎QPlatformNativeInterface目前是私有的, 当该库稳定时,将作为Qt 平台抽象的一部分公开。