QWidget::winId()
用于返回窗口小部件所包含的窗口的底层特定于操作系统的句柄。在文档中,其指出:
此值可能会在运行时更改。更改窗口系统标识符后,类型为
QEvent::WinIdChange
的事件将发送到窗口小部件。
听起来直接存储返回的变量似乎是不安全的(至少没有某种机制可以监听事件并更新变量)。
但是,我连接了一个完成该功能的事件过滤器,但从未真正调用过它。
这让我认为这是某些怪异情况的结果,或者是某些操作系统所特有的。
导致窗口ID更改的基本机制是什么?它会影响所有操作系统吗?是否有任何假设可以使其安全存储并在以后使用窗口ID?
在这种情况下,窗口ID仅用于查看操作系统的窗口列表是否包含winId()
函数返回的指定ID。