问题标签 [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.
qt - 将多个信号连接到 Qt 中的单个插槽
我正在尝试跟踪少数 QTextEdits 的 textChanged() 信号。无论文本编辑是否发出信号,我都想做同样的事情:如果 QListWidget 为空,则取消选中其关联的复选框,否则保持选中状态。我的功能如下:
使用当前的方法,我必须为每个 QTextEdit 创建一个这样的函数;每个函数都包含几乎相同的代码。如果我将每个文本编辑存储在一个数组中(这样我就可以在 QListWidget 中找到它们的关联索引),我是否有可能拥有这样的插槽?
这是可能的还是我应该为每个文本编辑创建一个单独的插槽?如果需要进一步澄清,请告诉我!
最后,我觉得 QLineEdits 和 QTextEdits 之间唯一有意义的区别是默认大小。为了保持一致,我是否应该在整个 UI 中只使用这些对象之一?
谢谢!!!
python - QPushButton FocusIn 生成哪个信号?
我正在创建一个小型 PyQt 应用程序并陷入 MouseOver 效果。
我有一个名为,和的QMainWindow
三个按钮。所有这些都是类型createProfileButton
downloadPackagesButton
installPackagesButton
QPushButton
现在我创建了一个标签,当有人将鼠标悬停在任何这些按钮上时,它将保存文本。我检查了文档并知道可以使用覆盖来处理它
- focusInEvent(self, QFocusEvent)
- focusOutEvent(自我,QFocusEvent)
按钮的方法。现在这意味着我必须为QPushButton
三个按钮中的每一个进行扩展,并且它们中的每一个都必须为一个类的对象。我尝试寻找鼠标悬停或离开按钮时发出的信号,但徒劳无功。我在网上获得的所有帮助都是实现这两种方法。
扩展一个类并创建一个类不是矫枉过正吗?信号会很整洁,不幸的是,我找不到任何信号。
- http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qpushbutton.html - 没有信号
- http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qabstractbutton.html - 已点击、释放、按下和切换信号
- http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html - 只有一种方法
所以我检查了整个继承层次结构,没有发现FocusIn
and的信号FocusOut
c++ - Qt 计算器中的连接更少
我正在使用 Qt 和 C++ 编写一个简化的计算器,用于学习目的。每个数字都是一个 QPushButton,它使用相同的插槽来修改用作显示的 lineEdit 小部件中的文本。
该插槽使用 sender() 方法来确定按下了哪个按钮,因此正确的数字将被写入显示小部件。
为了让所有按钮都能正常工作,我必须为每个按钮编写一个连接,有点像这样:
由于它们都使用相同的插槽,唯一改变的是正在使用的按钮,因此下一个发送者将是ui->button2
, ui->button3
,依此类推。我的问题是,有没有办法减少定义的连接数量?
编辑:这是一个有用的链接,详细讨论了这个问题。
qt - Qt - 发射槽而不是信号
假设我有一个 QPushButton 小部件,它通过 clicked() 信号连接到插槽。这第一个插槽依次通过 emit 关键字调用另一个插槽。第二个插槽从第一个插槽中获取一个参数并对其进行处理。它有效,但根据我对信号槽模式的理解,发出信号才有意义。发出插槽而不是信号是错误的吗?
qt - 下面的函数有什么作用?
我正在寻找 Qt 对函数的实现,QObject::qt_metacall(_c, _id, _a);
这是将给定函数名称转换为索引的地方。但我无法在他们的源代码中的任何地方找到函数实现。
为什么qt_metacall
调用父类?
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 函数中的哪些更改可能导致冲突?
提前致谢
c++ - 何时使用信号和插槽,何时不使用
我们使用的 Qt 提供了我觉得非常方便的信号和插槽。然而,强大的力量伴随着巨大的责任,我认为很容易滥用这个功能。
是否有信号槽使用的最佳实践?我很难以这种方式找到一些通用指南。一些问题(我对此有明确的看法,但并非我团队的所有成员都同意):
- 可以用信号报错吗?
- 可以假设将处理信号吗?
- 信号可以用来启动动作吗?例如
signal displayInfoScreen()
,必须由显示信息屏幕的插槽处理。
非常欢迎关于何时应该/不应该使用信号的任何其他意见!
c++ - 未通过 Designer 创建 Qt 对象时如何处理信号?
嗨,我有空闲时间,所以决定看看 Qt 以及如何轻松地将我的 Windows 应用程序移植到 Qt。
我唯一真正的问题是需要在 Qt 下重新实现的几个控件。我已经处理了控件的基本绘图,但是我的控件创建了一个子滚动条。问题是这个滚动条是作为我的新小部件的一部分动态创建的(即m_Scrollbar
是小部件的成员)。然后我如何响应滚动条的移动。在其他情况下,这很容易,因为我只需on_myscrollbar_sliderMoved
在 my 下创建一个函数protected slots
并在那里处理它。然而,这确实依赖于QScrollBar
被调用myscrollbar
。由于我已经动态地创建了对象(即不是通过设计器),我如何捕获这个信号?
我猜这真的很简单,我错过了明显的:)
c++ - Visual Studio中的Qt:连接插槽和信号不起作用
我已经为 VS 插件安装了 Qt 和 Qt。一切正常,UI 应用程序可以编译和运行,但连接信号和插槽却不行。我Q_OBJECT
在我的班级和连接我在构造函数中使用这个代码:
编辑:
显示详细方法:
窗口标题未更改且未到达断点。
在 Generated Files 目录中生成了 moc 文件,但是该类的 moc 文件是空的(其他没有),我认为是因为该类没有信号,而只有一个插槽。
即使 Designer 生成的连接也不起作用,并且调用 connect 方法返回true
。
c++ - 我应该选择哪个轻量级 C++ 事件/委托(信号/插槽)库?
我知道这个问题已经被问及并得到了回答,但那是一年多以前的事了,看起来还有新的替代方案。
因此,我正在使用SFML 库(实际上我开始觉得它非常酷)编写游戏,并且我正在寻找一个轻量级的快速事件/委托库。
在做了一些研究并把经典的(Boosts.Signals,libsigc++)放在一边之后,我发现了“ cpp-events ”。它现在看起来不是很流行——因为它是一个非常新的库——但它似乎最难测试。我很想知道这里是否有人尝试过并且可以提供一些反馈。
您还有其他类似(或更好)的选择吗?我看起来比论坛上的答案更真实的项目(将被维护)。
谢谢 !