我想在 Windows 中嵌入一个 Qt 应用程序(不是相反,因为许多其他问题已经得到解答)。为了澄清我有一个 win32 应用程序,我启动了一个 qt python 进程;这个 qt python 进程必须嵌入到 win32 应用程序中。如何才能做到这一点?在 API for 中QWindow::fromWinId,它明确指出:
“创建由另一个进程或使用 Qt 下面的本机库创建的窗口的本地表示......”
“......这可以在支持它的平台上使用,将 QWindow 嵌入到本机窗口中,或将本机窗口嵌入到 QWindow 中。”
其次QWidget::createWindowContainer似乎只适用于在 Qt 中嵌入本机窗口(不是我想要的方式)。
我不确定我将如何创建一个QWidgetinside QWindow。从这个问题来看,似乎方法是QQuickView用 a 创建 a QWindow::fromWinId;但是,我似乎找不到如何将 QWidget 绑定到 QQuickView 中。
目前我实际上正在设置父级,::SetParent但是有一些奇怪的消息传递协议要处理,所以我想尝试用 Qt 的方法重构它。
到目前为止编写的一些基本代码(PySide2,但 C++ 或任何其他具有 Qt 绑定的语言都可以):
app = QApplication(sys.argv)
hwnd = int(sys.argv[1], 16)
nativeParentWindow = QWindow.fromWinId(hwnd)
quickview = QQuickView(nativeParentWindow)
# this part is incorrect (tries to embed native window into qt)
# I want this application to run embedded inside hwnd
wrongWidget = QWidget.createWindowContainer(quickview)
wrongWidget.show()
sys.exit(app.exec_())