QMdiSubWindow的本机句柄

Native Handle of QMdiSubWindow

本文关键字:句柄 本机 QMdiSubWindow      更新时间:2023-10-16

我正在尝试获取添加到QMdiArea的QMdiSubWindow的HWND。

我使用以下代码来获取句柄:

Dialog* subWindow = new Dialog(this);
QMdiSubWindow* sw = ui->mdiArea->addSubWindow(subWindow);
(HWND) hwnd = id->winId();

为了测试它是否有效,我使用了以下代码:

SetWindowText(hwnd, "Hello, World!");

什么也没发生。如果我运行以下代码:

 SetWindowText((HWND) this->winId(), "Hello, World!");

它适用于主窗口。代码被放置在主窗口的构造函数中。子窗口类的类型为QDialog。

有什么办法让它发挥作用吗?

您可能有一个正确的HWND,但它实际上可能不是您要找的那个(一个可见的窗口实际上可能由几个嵌套的窗口组成:当您真正想要拾取它的子窗口或父窗口时,您可能会认为您拾取了正确的窗口)。

我建议你使用Microsoft间谍工具,使用finder工具选择你感兴趣的mdi小部件(直接在你显示的GUI上),间谍工具会给你它的HWND。然后你可以检查Qt报告你相同的id。