gpt4 book ai didi

wpf - Qt QML 组件,如 WPF HwndHost

转载 作者:可可西里 更新时间:2023-11-01 14:18:01 27 4
gpt4 key购买 nike

我们有一个桌面 Windows 应用程序,它使用需要显示 HWND 的组件。在 WPF 应用程序中,我们使用 HwndHost 来显示它。我们正在尝试制作一个基于 Qt QML 的应用程序来做同样的事情。

是否可以在 QML 应用程序中托管 HWND 组件?

它与 QQuickWindow 一起工作,但我附加的控件占据了整个窗口应用程序区域。我想绑定(bind)到一个较小的区域,比如下面 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"
}
}

这里是一个 cpp 片段:

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...
}

最佳答案

一旦您有了 QWindow(或任何继承自它的东西),您就可以通过调用 winId 方法获得 HWND。您需要像这样对其进行类型转换:

QWindow pWindow;
// create pWindow
HWND hWnd = reinterpret_cast<HWND>(pWindow->winId());

关于wpf - Qt QML 组件,如 WPF HwndHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29954733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com