如何在不声明32个插槽的情况下将32个按钮的按下()信号连接到单个功能?

StackOverflow https://stackoverflow.com/questions/1801167

  •  05-07-2019
  •  | 
  •  

我有一个小部件,里面有32个按钮。我需要将每个按钮的pressed()信号连接到一个插槽,以便调用一个函数,该参数取决于我按下的按钮。现在我通过以on_QPushButtonName_pressed()的形式添加32个插槽来做到这一点 但那就是很多老虎机。我想知道是否还有另一种方法可以做到更小。我已经做了类似的事情,但我正在使用自定义小部件,所以我可以在我的类的代码中创建一个新信号,但我想避免只为一个按钮创建一个自定义小部件。

有帮助吗?

解决方案

使用QSignalMapper类。文档 - http://doc.qt.io/qt-5/qsignalmapper.html - 有一个非常接近你想要的例子。

其他提示

另一种可能性:只创建一个插槽,调用 sender()并打开结果。

正如Rohan所说,QSignalMapper是推荐的解决方案,因为sender()有点像黑客。它的优点是它更容易使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top