有没有方法咖喱qt插槽?也许有类似curryng的东西?qt插槽柯里
qt插槽柯里
回答
您可以使用QSignalMapper将一些信号绑定到它上面,然后将它自己的信号连接到带有一些参数的目标插槽。
// connect signal to mapper
signalMapper = new QSignalMapper(this);
signalMapper->setMapping(button1, QString("param1"));
signalMapper->setMapping(button2, QString("param2"));
connect(button1, SIGNAL(clicked()), signalMapper, SLOT(map()));
connect(button2, SIGNAL(clicked()), signalMapper, SLOT(map()));
// connect mapper signal to slot
connect(signalMapper, SIGNAL(mapped(const QString &)), this, SLOT(originalSlot(const QString &)));
绑定参数是不可能使用Qt信号/插槽。你将不得不使用boost :: signals和boost :: bind来实现这样的功能。
的副本LibQxt也是一个选项,请参阅我的答案。 – 2011-01-24 21:49:29
尽管不可能直接使用Qt,但通过LibQxt可以获得一些绑定/ currying。例如,距离的QxtBoundFunction文档:
到目前为止,最常用的预期用途是提供一个参数,以当所述 信号不具有提供一个槽。许多新开发Qt的开发人员尝试编写如下代码: \ code connect(button,SIGNAL(clicked()),lineEdit,SLOT(setText(“Hello,world”))); \ endcode 有经验的Qt开发人员会立即发现这个缺陷。典型的解决方案 用于创建一个简短的单行封装插槽来调用所需的功能。一些巧妙的开发人员甚至可以使用QSignalMapper来处理只需要一个 int或QString参数的插槽。
QxtBoundFunction使得这样写的前一个连接语句: \代码 连接(按钮,SIGNAL(点击()),QxtMetaObject ::绑定(lineEdit, SLOT(的setText(QString的)),Q_ARG(QString的, “你好,世界!”))); \ code 这样做可以实现相同的结果,而无需创建新插槽,或者更糟糕的情况下只需传递一个常量值即可。
另外,通过使用QXT_BIND宏的,从信号 参数可被重新安排,省略,或旁边与Q_ARG宏提供 恒定参数传递。例如,这可用于为通用功能提供有状态的回调。
可以绑定多种功能。最常见的绑定适用于Qt信号和插槽,但标准C/C++函数也可以绑定。 未来的开发可能会增加绑定到C++成员函数的能力,如果需要,开发人员可以为自定义的QxtBoundFunction子类提供更多的灵活性。
虽然我已经提交了一些补丁到LibQxt,但我没有直接使用这个,所以你的里程可能会有所不同。
当然,现在我们的Qt 5和信号连接至任意调用对象的能力:
connect(sender, &MyClass::mySignal, receiver, std::bind(&OtherClass::mySlot, boundArg));
connect(sender, &MyClass::mySignal, receiver, [=] { receiver->mySlot(boundArg); });
- 1. QT信号/插槽
- 2. Qt转发插槽/连接插槽到插槽?
- 3. Qt找不到插槽
- 4. Qt自定义插槽
- 5. Qt连接信号插槽
- 6. QT信号和插槽
- 7. Qt连接信号插槽
- 8. Qt C++ - 自定义插槽
- 9. Qt信号和插槽xml
- 10. C++ Qt“去插槽”丢失
- 11. 寄过来的Qt插槽
- 12. QT-Dbus信号/插槽?
- 13. Qt PushButton信号和插槽
- 14. C++,Qt信号和插槽
- 15. QT中的信号插槽
- 16. 信号和插槽QT
- 17. Qt不找QStackedWidgets'插槽setCurrentWidget
- 18. Qt Qt中的信号和插槽
- 19. Qt信号插槽:信号已发送,但未插入插槽
- 20. Qt Designer在哪里将信号存储到插槽连接?
- 21. 哪里是“Qt信号/插槽编辑器”生成的代码?
- 22. 当插槽存在时Qt连接“没有这样的插槽”
- 23. Qt信号和插槽之间的插槽
- 24. Qt发布表单A到插槽B中的插槽
- 25. Qt插槽和信号。获取插槽接收器对象
- 26. 柯里与Scala中
- 27. 柯里函数Erlang
- 28. QT连接插槽/信号不工作
- 29. Qt信号和插槽通过参考
- 30. Qt连接信号和插槽
能否请您给的例子是你心目中的? – 2011-01-24 17:22:53
看起来像http://stackoverflow.com/questions/3166051/binding-arguments-to-signals-slots – 2011-01-24 19:46:03