我们有一个桌面Windows应用程序,使用一个需要
能否在QML应用程序中托管
它可以在
HWND
来显示的组件。在WPF应用程序中,我们使用HwndHost
来显示它。我们正在尝试制作一个基于Qt QML的应用程序来完成相同的操作。能否在QML应用程序中托管
HWND
组件?它可以在
QQuickWindow
中工作,但我附加的控件占据了整个窗口应用区域。我想要绑定到一个较小的区域,比如下面的QML中的rectArea
。但是QQuickItem
没有windId()
,只有它的父级window()
。这有可能吗?
以下是我的QML:ApplicationWindow {
width: 640
height: 480
visible: true
Rectangle {
objectName: "rectArea"
id: rectangle1
x: 0
y: 0
width: 200
height: 200
color: "#ffffff"
}
}
这里是一个 C++ 代码片段:
void setHwnd(QQmlApplicationEngine& m_engine) {
auto root_objects = m_engine.rootObjects();
m_rootObject = root_objects[0];
auto rect_area = m_rootObject->findChild<QQuickItem*>("rectArea");
HWND hWnd = reinterpret_cast<HWND>(rect_area->window()->winId());
// use hWnd here, but it takes the entire window area...
}