代码之家  ›  专栏  ›  技术社区  ›  Serafina Brocious

与qtscript(qt 4.5.2)中的信号相连的函数未触发

  •  2
  • Serafina Brocious  · 技术社区  · 14 年前

    我已经注入了一个专有的qt(4.5.2)应用程序,添加了我自己的兼容qtscript版本,并设法访问了我需要的所有信号。但是,当连接到它们(通过qtscript)时,永远不会调用我的函数。

    我想出了一些理论来解释这是为什么,我已经测试了我能想到的一切,但我已经撞到了一堵墙。注意,我从来没有任何连接异常。以下是我目前的理论:

    • 我要连接的信号已经连接到其他插槽,这会以某种方式阻塞它(但据我所知,所有的qt信号都向所有插槽发射,没有额外的工作,并且不能以这种方式被限制)
    • 这些信号拒绝了我的连接,或者在连接后断开了我的连接(但我看不到这样的功能)
    • 我的连接是从另一个线程发生的,这导致它无法正确连接。

    这些理论中的任何一个是可信的吗?如果没有,我错过了什么?

    2 回复  |  直到 13 年前
        1
  •  3
  •   Serafina Brocious    14 年前

    在对内部进行了大量挖掘并提出了大量问题(这里和freenode上的qt中,也就是说)之后,我设法让它工作起来。问题是我注入的代码在没有事件泵的本地线程中运行。实例化qEventLoop并定期调用processEvents()解决了这个问题。

        2
  •  0
  •   svenstaro    13 年前

    这个问题真的很老,已经回答了,但是对于那些来这里寻求帮助的人,以及对于谁来说,上面的问题不是一个好的解决方案,您可能需要考虑设置 qt::连接类型 在connect语句中 Qt::直接连接 像这样:

    QObject::connect(scrollBar, SIGNAL(valueChanged(int)),
                     label,  SLOT(setNum(int)),
                     Qt::DirectConnection);
    

    这应该以不同的方式解决相同的问题。