从 HDC 句柄创建 QPaintDevice

Create a QPaintDevice from HDC handle

本文关键字:QPaintDevice 创建 句柄 HDC      更新时间:2023-10-16

我有一个来自外部库的Windows HDC句柄,我想使用QPainter功能来利用它。Qt中有什么方法可以从HDC句柄创建QPaintDevice吗?

一种方法是这样做的:

使用 Windows API,从 HDC 获取 HWND。

HWND handle = WindowFromDC(hdc);
assert(handle != NULL);

然后子类 QWidget 获取对受保护成员转换的访问权限。使用此功能,使用此成员创建 QWidget,如以下解决方案中所述:如何创建以 hwnd 作为父级的 qwidget。在此示例中,我调用了 QWidgetWrapper 的子类。

QWidgetWrapper *w = new QWidgetWrapper();
w->create((Wld)main_window);

请注意,这将是Qt中"平台依赖窗口标识符"的typedef。