c++ - 将参数绑定(bind)到信号/槽

标签 c++ qt

我基本上有多个事件信号,我想连接到同一个插槽。我想知道的是如何将基于字符串的参数传递给同一个槽,以便槽知道这个信号来自哪个槽。一种替代方法是制作与信号一样多的槽,然后以 1:1 的方式连接它们,但考虑到所有处理的代码非常相似,这种方法很有效。我试过这样做,但出现了一些错误:

connect(selecter1,SIGNAL(selected(QString)),this,SLOT(backgroundTypeChoiceMade(QString)));
connect(button1,SIGNAL(clicked()),this,SLOT(backgroundTypeChoiceMade("button1")));
connect(button2,SIGNAL(clicked()),this,SLOT(backgroundTypeChoiceMade("button2")));

错误与我在最后 2 个命令中传递的参数有关。backgroundTypeChoiceMade 声明如下:

void backgroundTypeChoiceMade(QString);

谁能告诉我上面代码中的错误是什么?

最佳答案

您可以使用 QSignalMapper .尽管 QSignalMapper 是您问题的答案,但我认为 jon hanson 的答案是您应该采取的方式。这样你会得到更简洁的代码。

关于c++ - 将参数绑定(bind)到信号/槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3166051/

相关文章:

c++ - setHeaderData 不工作 + qt

c++ - Qt 信号和槽线程安全

c++ - VS2015 中类型特征的奇怪错误

c++ - Qt - 在工作线程崩溃时将 cv::Mat 转换为 QImage

c++ - QML:QQmlListProperty<T>。 T 必须是 QObject 吗?

qt - 将 Qxt 插件添加到 Designer

c++ - 使用当前焦点小部件上下文菜单自动填充菜单栏中的 "Edit"菜单

c++ - 使用 Outlook 2016 : MAPISendMail fails in an windows application and returning "MAPI_E_FAILURE" as error code

c++ - openmp中的重入锁

c++ - Boost ASIO receive_from 如何返回底层套接字错误?