我需要一个QWindow来捕获对象A中的screenChanged信号。
我有具有Qt::Window标志的QWidgetB。
B是A的 parent 。
创建了类A的对象后,我试图像这样调用connect:

bool isOk = connect(b->window()->windowHandle(), SIGNAL(screenChanged(...)), a, SLOT(...)));
assert(isOk);

我收到一条错误消息:
QObject::connect:无法将(null):: screenChanged(QScreen *)连接到CFloatingEdit::onScreenChanged()

为什么b-> window()-> windowHandle()为零?
我是否要以正确的方式使用screenChanged?

最佳答案

将评论合并到答案中:

史蒂夫:
看一下在这个问题中,Ming-Ming Cheng的答案中windowForWidget函数的实现。

arturx64:
如果您的窗口部件不是本机的,则将返回nullptr。您确定使用适当的小部件吗?
顺便说一句,您可以在小部件上设置Qt::WA_NativeWindow属性以使其原生。

关于c++ - windowHandle返回零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41998590/

10-13 08:49