【问题标题】:windowHandle returns zero窗口句柄返回零
【发布时间】: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 属性使其成为原生。
  • 感谢详细解释!
  • 是的,为什么不呢? )

标签: c++ qt


【解决方案1】:

合并 cmets 到答案:

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

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

【讨论】:

    猜你喜欢
    • 2014-08-02
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2013-11-11
    相关资源
    最近更新 更多