【发布时间】:2017-06-19 07:26:57
【问题描述】:
我需要一个 QWindow 来捕获对象 A 中的 screenChanged 信号。
我有具有 Qt::Window 标志的 QWidget B。
B 是 A 的父母。
创建 A 类的对象后,我尝试像这样调用连接:
bool isOk = connect(b->window()->windowHandle(), SIGNAL(screenChanged(...)), a, SLOT(...)));
assert(isOk);
我收到一个错误提示:
QObject::connect: 无法连接 (null)::screenChanged(QScreen*) 到 CFloatingEdit::onScreenChanged()
为什么 b->window()->windowHandle() 为零?
我是否尝试以正确的方式使用 screenChanged?
【问题讨论】:
-
看一下this问题中Ming-Ming Cheng的回答中
windowForWidget函数的实现。 -
如果您的小部件不是原生的,则将返回 nullptr。你确定你使用了合适的小部件吗?
-
顺便说一下,您可以在小部件上设置 Qt::WA_NativeWindow 属性使其成为原生。
-
感谢详细解释!
-
是的,为什么不呢? )