在Qt / C++中,我有一系列按钮,我想在其中通过单个事件处理程序来运行它们以进行单击,并知道单击了哪个按钮。
有没有一种方法可以将按钮单击事件列表连接到一个插槽?与之类似,我创建了一个QList<QPushButton *>
,然后使用一个connect()
语句来处理此列表的&QPushButton::clicked
信号,并将其映射到一个单独的SLOT(onButtonClicked(QWidget *))
。
那里的关键字-单。当然,我可以迭代一个列表,但是我想知道是否有一种方法可以使列表迭代之外仅包含一个connect()
语句。
换句话说,我想知道是否已经有一种我可能没有意识到的有效方法,而不是迭代QList
的QPushButton
。这只是高效和整洁的问题。
最佳答案
解决此问题的最佳方法可能是使用QButtonGroup
。如果您坚持使用自己的列表,或者可能具有不同的小部件或信号,则仍然可以使用QSignalMapper
。
http://doc.qt.io/qt-5/qbuttongroup.html
http://doc.qt.io/qt-5/qsignalmapper.html