问题标签 [qsignalmapper]

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 投票
6 回答
78784 浏览

qt - 将参数传递给插槽

我想用一堆 QActions 和 QMenus 覆盖 mouseReleaseEvent ......

所以我想向插槽传递一个参数onStepIncreased(你可以想象它们是 1、5、10、25、50)。你知道我该怎么做吗?

0 投票
2 回答
17459 浏览

c++ - QSignalMapper 是如何工作的?

在我在这里发帖后:将信号和插槽关联到一个 qcheckbox 动态创建我需要关联:

clicked()当我点击qCheckBox我的功能时的信号cliqueCheckBox(QTableWidget *monTab, int ligne, QCheckBox *pCheckBox)

为此,我必须使用QSignalMapper,经过两个小时的尝试了解它是如何工作的,我不能得到一个好的结果,这是我制作的代码,这显然是错误的:

你能向我解释一下,它是如何QSignalMapper工作的吗?我真的不明白与什么相关联:(

0 投票
1 回答
1516 浏览

python - 难以理解信号映射器 PyQt

所以我正在根据我系统上的一些文件生成一个选项菜单。我有一个对象列表,我需要在菜单中动态生成一个选项,并且需要能够让正在创建的函数知道要使用哪个对象。经过一番研究,我找到了下面的帖子。我无法发表评论,因为我的代表还不高:How to pass arguments to callback functions in PyQt

当我运行它时,信号映射器无法正常工作。它甚至没有正确调用handleButton。关于如何正确使用信号映射器的任何想法?

编辑:

我发现通过使用旧式信号/插槽连接,这是固定的:

我是否错误地使用了新型连接?

基于这篇文章以及我发布的原始链接,我认为我做的事情是正确的。

0 投票
1 回答
77 浏览

c++ - QSignalMapper 选择文件后不更新参数

我正在制作一个能够对我的电路板进行编程的应用程序。我想通过文件对话框选择文件并通过上传按钮上传带有所选文件的板。我有两个类:MyFileDialog 和 CommandProcess。我将上传按钮单击信号连接到信号映射器,并将其映射到 CommandProcess::startProcess 插槽,该插槽使用所选文件的路径执行进程,但如果我在程序启动时未指明路径,则路径不正确。选择文件后如何更新映射参数?

main.cpp 代码的一部分:

MyFileDialog 类:

控制台进程类:

0 投票
2 回答
3545 浏览

python - pyqt:将多个信号连接到 pyqt 中同一函数的正确方法(QSignalMapper 不适用)

  1. 我已经准备好很多关于如何在 python 和 pyqt 中将多个信号连接到同一个事件处理程序的帖子。例如,将多个按钮或组合框连接到同一个功能。

  2. 许多示例展示了如何使用 QSignalMapper 执行此操作,但是当信号带有参数时它不适用,例如 combobox.currentIndexChanged

  3. 许多人建议它可以用 lambda 制作。我同意,这是一个干净而漂亮的解决方案,但没有人提到 lambda 创建了一个包含引用的闭包——因此不能删除被引用的对象。你好内存泄漏!

证明:

尽管我们清除了引用,但小部件并未被删除。删除与 lambda 的连接 - 它被正确删除。

所以,问题是:在不泄漏内存的情况下,将多个带参数的信号连接到单个处理程序的正确方法是什么?

0 投票
3 回答
202 浏览

c++ - 使用 QSignalMapper 将 QString 传递给父类的类方法

我有一个父类,它的方法可以更改某些信号上的标签图片。例如,当 QComboBox 中发生某些事情时...(valueChanged,已激活)

然后我有了这个孩子:

现在readCombo我想读取一个字符串并将其传递给更改图片:

但这给了我No such SignalNo such Slot或者大写Incompatiple sender/receiver arguments

我将不胜感激,因为语法确实不直观(imo),而且我找不到任何适合我的案例的好的参考(在询问之前做了很多试验和错误)

0 投票
0 回答
216 浏览

c++ - QSignalMapper 不触发映射

我最近遇到了 QSignalMapper 的问题。我无法让信号映射 (QObject*) 触发

我目前有一个keyboard.qml从 c++ 类中分配和删除的 qml 对象keyboardManager.cpp。在keyboard.qml我有以下信号:

这个功能:

信号

当所有与状态更改相关的动画完成时触发

在 C++ 中,我有一个方法和一个插槽

在 beginRemoveKeyboard 我尝试将 keyboardClosed 连接到 endRemoveKeyboard 以便我可以释放我的内存并正确注销所有指针,所以我做了这个测试:

在 QML 中:

在 C++ 中:

但是,当我调用 KeyboardManager::beginRemoveKeyboard 并得到:

就这样。没有“删除开始”,这意味着KeyboardClosed()被触发,test()被调用但endRemoveKeyboard(QObject*)不是。为什么以及如何实现我想要的?

0 投票
0 回答
150 浏览

c++ - QSignalMapper 给了我一个分段错误

我想编写一个方法来创建一个按钮并将其连接到一个带有字符串的插槽:

Widget在(只是一个子类)的一个实例上QWidget我做:

widget->createButton(SLOT(sendCom(QString))

如果没有映射,它可以正常工作,我从一段类似的代码中复制了映射语法,该代码也可以正常工作。编译时没有错误,但是当我按下按钮时,我最终会出现分段错误。有任何想法吗?

编辑:就像 peppe 建议的那样,我运行了 valgrind,这是输出

这有助于定位地址,但我仍然不知道如何调试。

编辑:问题解决了。我缩短了代码以更精确,但这隐藏了实际原因

qobject_cast 导致了 SIGSEGV。它仍然是为了澄清它为什么这样做。

0 投票
1 回答
446 浏览

c++ - 如何映射到重载 Qt 插槽

我想重载 Qt SLOT 以对从 a 发出clicked() SIGNAL的信号QPushButton或从 a 发出的信号作出反应(因为仅在选中复选框时没有发出信号)。stateChanged(int)QCheckBox

所以这是我的两个插槽。

widget->createButton(SLOT(sendCom(QString), data);打电话给以下,映射工作正常。

widget->createCheckBox(SLOT(QString, int), data)我也想将 ChechBox 的状态传递给重载Widget::sendCom(QString data, int state)。映射是如何完成的?

0 投票
1 回答
431 浏览

qt - Qt QSignalMapper 正在为地图中的每个项目发出信号

我有一个接收我创建的类的 QList 的函数。我们称这个假设的类为“Stuff”。所以,这个函数接收一个 QList of Stuff

我遍历 QList,根据“Stuff”对象的属性,我将生成以下内容之一:

1) QLine编辑

2) QCheckBox

3) QComboBox

这不是实际的代码,但这就是我本质上在做的事情:

问题是,如果我通过编辑 QLineEdit、选中复选框或更改组合框值仅触发 Widget 的一个信号,则会调用 onStuffChanged(int) 函数 N 次,其中 N = number of mSignalMapper 的映射。

这里发生了什么?如果我遍历并创建 10 个小部件,则仅单击 10 个小部件中的 1 个会调用该函数 10 次,而这 10 次中的每一次都会传递与仅与我交互的 1 个对象相关联的唯一 int。因此,如果 10 个小部件中的第一个是唯一 int ID 为 27 的复选框,则 onStuffChanged(int) 函数将被调用 10 次,每次参数为 27。