问题标签 [signals-slots]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2767 浏览

c++ - 使用信号和槽更新指针

我对 Qt 很陌生;请帮我解决问题。

我正在使用线程在后台执行密集操作。同时我想更新 UI,所以我正在使用 SIGNALS 和 SLOTS。要更新 UI,我会发出一个信号并更新 UI。

让我们考虑下面的示例代码,

在上面的代码中,我们创建了一个本地对象并传递了一个本地对象的地址。在 Qt 文档中,它说当我们发出一个信号时,它会被放入队列中,稍后它会被传递到窗口。由于我的对象在本地范围内,一旦超出范围就会被删除。

有没有办法在信号中发送指针?

0 投票
4 回答
4577 浏览

python - 将 PyQt4 QAction 触发()绑定到本地类 callable 似乎不起作用。如何调试这个?

当我想创建一个 QAction 时,我创建了这个对象。然后我将此 QAction 添加到菜单中:

Unfortunately, when the menu item is selected, the 'triggered' function is not called. QtCore.QObject.connect() 返回 True。控制台上没有打印任何内容以指示任何错误,并且不会引发异常。

我该如何调试呢?(或者,我做错了什么?)

0 投票
3 回答
32020 浏览

qt - 确定连接到 Qt 中给定插槽的信号

我已经将自己注入到 Qt 应用程序中,并且试图找出给定插槽连接到的信号,但找不到任何有关执行此操作的信息。有开箱即用的机制吗?如果是这样,这是否暴露给 QtScript?(如果没有,我可以很容易地包装它。)

如果没有这样的机制,添加它的最佳方法是什么?我无法在简单挂钩之外操作现有应用程序,但我可以挂钩 QObject::connect 并自己存储连接,只是不确定这是否是最好的方法。

0 投票
2 回答
4957 浏览

c++ - 安全跨线程信号/槽 C++

似乎为 Signal 类和插槽中调用的内容提供安全跨线程信号的唯一实现是 QT。(也许我错了?)。

但是我不能在我正在做的项目中使用 QT。那么我怎样才能从不同的线程提供安全的 Slots 调用(例如使用 Boost::signals2)?插槽内的互斥锁是唯一的方法吗?我认为信号2可以保护自己,但不能保护插槽内正在执行的操作。

谢谢

0 投票
2 回答
677 浏览

qt - 连接到 QtScript(在 Qt 4.5.2 上)中的信号的函数未触发

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

我已经提出了一些理论来解释为什么会这样,并且我已经测试了我能想到的所有东西,但我遇到了一些障碍。请注意,我从来没有任何连接异常。以下是我目前的理论:

  • 我正在连接的信号已经连接到其他插槽,这以某种方式阻止了它(但据我所知,所有 Qt 信号都会在没有额外工作的情况下触发到所有插槽,并且不能以这种方式受到限制)
  • 信号拒绝我的连接,或在连接后断开我的连接(但我看不到这方面的功能)
  • 我的连接是从另一个线程发生的,这在某种程度上导致它无法正确连接

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

0 投票
1 回答
6646 浏览

c++ - 如何在 QT 中跟踪发射信号?

有没有办法观察所有发出的信号?

PS。当然,我们可以为所有信号编写槽,但这不是我想要的。

0 投票
3 回答
527 浏览

c++ - Qt 中的信号和槽到底是什么?

我知道它们在概念上是如何工作的,但是 Qt 框架中的信号和插槽是如何实现的呢?Qt Creator 将它们视为关键字,但它们只是一组宏,还是在编译这些源文件之前需要特殊的预处理器?

换句话说,如果我在我的代码中使用 Qt 的信号/槽功能,我可以在任何 C++ 编译器上轻松编译它吗?

0 投票
3 回答
32309 浏览

c++ - Qt 是否支持虚拟纯插槽?

我的 GUI 项目Qt有很多“配置页面”类,它们都直接继承自QWidget.

最近,我意识到所有这些类共享 2 个公共插槽(loadSettings()saveSettings())。

对此,我有两个问题:

  • BaseConfigurationPage用这两个插槽作为虚拟纯方法编写一个中间基抽象类(让我们命名)是否有意义?(每个可能的配置页面都会有这两种方法,所以我会说“是”)
  • 在我对代码进行重大更改之前(如果必须):Qt 是否支持虚拟纯插槽?有什么我应该注意的吗?

这是一个描述所有内容的代码示例:

0 投票
3 回答
4590 浏览

c++ - 如何处理 Qt 子类中的信号?

如何处理子类中的信号?假设我的子类派生自QTextEdit信号并且对信号感兴趣textChanged。将对象连接到自身似乎很愚蠢,我应该能够简单地覆盖该textChange方法 - 但它不是virtual.

什么是公认的方式来做到这一点?

0 投票
1 回答
1136 浏览

qt - 带有信号和插槽的未定义参考链接器错误

使用 Qt Creator,我在 Qt 中创建了一个带有自定义插槽的类:

但是,我收到此链接器错误:

文档说:

如果您收到“未定义对 LcdNumber 的 vtable 的引用”行的编译器错误,您可能忘记运行 moc 或在链接命令中包含 moc 输出。

......但这意味着什么并不明显。

有什么我需要添加到我的班级或 .pro 文件中的吗?

编辑——这是我的 .pro 文件:

编辑:

这个问题处理同样的问题,但答案并没有说明我如何在 Qt Creator 中解决这个问题。我是否需要将 moc 生成的 .cpp 文件显式添加到要链接的文件列表中?这似乎是一种痛苦。