我有一个小部件,里面有32个按钮。我需要将每个按钮的pressed()信号连接到一个插槽,以便调用一个函数,该参数取决于我按下的按钮。现在我通过以on_QPushButtonName_pressed()的形式添加32个插槽来做到这一点 但那就是很多老虎机。我想知道是否还有另一种方法可以做到更小。我已经做了类似的事情,但我正在使用自定义小部件,所以我可以在我的类的代码中创建一个新信号,但我想避免只为一个按钮创建一个自定义小部件。
答案 0 :(得分:8)
使用QSignalMapper类。文档 - http://doc.qt.io/qt-5/qsignalmapper.html - 有一个非常接近你想要的例子。
答案 1 :(得分:2)
另一种可能性:只创建一个插槽,调用sender()
并打开结果。
正如Rohan所说,QSignalMapper是推荐的解决方案,因为sender()有点像黑客。它的优点是它更容易使用。