问题标签 [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 回答
3794 浏览

qt - 将多个信号连接到 Qt 中的单个插槽

我正在尝试跟踪少数 QTextEdits 的 textChanged() 信号。无论文本编辑是否发出信号,我都想做同样的事情:如果 QListWidget 为空,则取消选中其关联的复选框,否则保持选中状态。我的功能如下:

使用当前的方法,我必须为每个 QTextEdit 创建一个这样的函数;每个函数都包含几乎相同的代码。如果我将每个文本编辑存储在一个数组中(这样我就可以在 QListWidget 中找到它们的关联索引),我是否有可能拥有这样的插槽?

这是可能的还是我应该为每个文本编辑创建一个单独的插槽?如果需要进一步澄清,请告诉我!

最后,我觉得 QLineEdits 和 QTextEdits 之间唯一有意义的区别是默认大小。为了保持一致,我是否应该在整个 UI 中只使用这些对象之一?

谢谢!!!

0 投票
2 回答
1943 浏览

python - QPushButton FocusIn 生成哪个信号?

我正在创建一个小型 PyQt 应用程序并陷入 MouseOver 效果。

我有一个名为,和的QMainWindow三个按钮。所有这些都是类型createProfileButtondownloadPackagesButtoninstallPackagesButtonQPushButton

现在我创建了一个标签,当有人将鼠标悬停在任何这些按钮上时,它将保存文本。我检查了文档并知道可以使用覆盖来处理它

  • focusInEvent(self, QFocusEvent)
  • focusOutEvent(自我,QFocusEvent)

按钮的方法。现在这意味着我必须为QPushButton三个按钮中的每一个进行扩展,并且它们中的每一个都必须为一个类的对象。我尝试寻找鼠标悬停或离开按钮时发出的信号,但徒劳无功。我在网上获得的所有帮助都是实现这两种方法。

扩展一个类并创建一个类不是矫枉过正吗?信号会很整洁,不幸的是,我找不到任何信号。

所以我检查了整个继承层次结构,没有发现FocusInand的信号FocusOut

0 投票
3 回答
850 浏览

c++ - Qt 计算器中的连接更少

我正在使用 Qt 和 C++ 编写一个简化的计算器,用于学习目的。每个数字都是一个 QPushButton,它使用相同的插槽来修改用作显示的 lineEdit 小部件中的文本。

该插槽使用 sender() 方法来确定按下了哪个按钮,因此正确的数字将被写入显示小部件。

为了让所有按钮都能正常工作,我必须为每个按钮编写一个连接,有点像这样:

由于它们都使用相同的插槽,唯一改变的是正在使用的按钮,因此下一个发送者将是ui->button2, ui->button3,依此类推。我的问题是,有没有办法减少定义的连接数量?

编辑:是一个有用的链接,详细讨论了这个问题。

0 投票
3 回答
3757 浏览

qt - Qt - 发射槽而不是信号

假设我有一个 QPushButton 小部件,它通过 clicked() 信号连接到插槽。这第一个插槽依次通过 emit 关键字调用另一个插槽。第二个插槽从第一个插槽中获取一个参数并对其进行处理。它有效,但根据我对信号槽模式的理解,发出信号才有意义。发出插槽而不是信号是错误的吗?

0 投票
2 回答
2501 浏览

qt - 下面的函数有什么作用?

我正在寻找 Qt 对函数的实现,QObject::qt_metacall(_c, _id, _a);这是将给定函数名称转换为索引的地方。但我无法在他们的源代码中的任何地方找到函数实现。

为什么qt_metacall调用父类?

0 投票
1 回答
1060 浏览

qt - Qt 和 OpenCV 2.0 集成问题

我有一个使用 OpenCV 进行图像处理的 Qt 应用程序。

OpenCV 1.0 一切正常,但当我升级到 OpenCV 2.0 时,它开始崩溃。我注意到它只会在 Qt 插槽内调用 OpenCV 函数时崩溃。

例如,以下插槽:

单击 testButton 时崩溃。

但是,如果我在任何其他地方调用相同的 cvThreshold 函数,例如在 main() 函数内部或 Widget 构造函数内部,它就可以正常工作。另外,如果我将相同的代码放在一个单独的函数中,并在同一个插槽中使用 QtConcurrent::run() 调用该函数,它也可以正常工作。

为什么会有这种行为?Qt 插槽中可以进行的操作是否有任何限制?OpenCV 2.0 函数中的哪些更改可能导致冲突?

提前致谢

0 投票
5 回答
3600 浏览

c++ - 何时使用信号和插槽,何时不使用

我们使用的 Qt 提供了我觉得非常方便的信号和插槽。然而,强大的力量伴随着巨大的责任,我认为很容易滥用这个功能。

是否有信号槽使用的最佳实践?我很难以这种方式找到一些通用指南。一些问题(我对此有明确的看法,但并非我团队的所有成员都同意):

  • 可以用信号报错吗?
  • 可以假设将处理信号吗?
  • 信号可以用来启动动作吗?例如signal displayInfoScreen(),必须由显示信息屏幕的插槽处理。

非常欢迎关于何时应该/不应该使用信号的任何其他意见!

0 投票
1 回答
394 浏览

c++ - 未通过 Designer 创建 Qt 对象时如何处理信号?

嗨,我有空闲时间,所以决定看看 Qt 以及如何轻松地将我的 Windows 应用程序移植到 Qt。

我唯一真正的问题是需要在 Qt 下重新实现的几个控件。我已经处理了控件的基本绘图,但是我的控件创建了一个子滚动条。问题是这个滚动条是作为我的新小部件的一部分动态创建的(即m_Scrollbar是小部件的成员)。然后我如何响应滚动条的移动。在其他情况下,这很容易,因为我只需on_myscrollbar_sliderMoved在 my 下创建一个函数protected slots并在那里处理它。然而,这确实依赖于QScrollBar被调用myscrollbar。由于我已经动态地创建了对象(即不是通过设计器),我如何捕获这个信号?

我猜这真的很简单,我错过了明显的:)

0 投票
4 回答
4962 浏览

c++ - Visual Studio中的Qt:连接插槽和信号不起作用

我已经为 VS 插件安装了 Qt 和 Qt。一切正常,UI 应用程序可以编译和运行,但连接信号和插槽却不行。我Q_OBJECT在我的班级和连接我在构造函数中使用这个代码:

编辑:

显示详细方法:

窗口标题未更改且未到达断点。

在 Generated Files 目录中生成了 moc 文件,但是该类的 moc 文件是空的(其他没有),我认为是因为该类没有信号,而只有一个插槽。

即使 Designer 生成的连接也不起作用,并且调用 connect 方法返回true

0 投票
2 回答
8344 浏览

c++ - 我应该选择哪个轻量级 C++ 事件/委托(信号/插槽)库?

我知道这个问题已经被问及并得到了回答,但那是一年多以前的事了,看起来还有新的替代方案。

因此,我正在使用SFML 库(实际上我开始觉得它非常酷)编写游戏,并且我正在寻找一个轻量级的快速事件/委托库。

在做了一些研究并把经典的(Boosts.Signalslibsigc++)放在一边之后,我发现了“ cpp-events ”。它现在看起来不是很流行——因为它是一个非常新的库——但它似乎最难测试。我很想知道这里是否有人尝试过并且可以提供一些反馈。

您还有其他类似(或更好)的选择吗?我看起来比论坛上的答案更真实的项目(将被维护)。

谢谢 !