在 Qt/C++ 中,有没有办法将按钮单击事件列表连接到一个插槽?

In Qt/C++, is there a way to connect a list of button click events to one slot?

在 Qt/C++ 中,我有一系列按钮,我想通过一个单击事件处理程序 运行 它们,并知道单击了哪个按钮。

有没有办法将按钮点击事件列表连接到一个插槽?比如,我创建了一个 QList<QPushButton *>,然后使用一个 connect() 语句来处理这个列表的 &QPushButton::clicked 信号,并将其映射到一个 SLOT(onButtonClicked(QWidget *)).

那里有关键字 -- 单身。当然,我可以迭代一个列表,但我想知道是否有一种方法可以在列表迭代之外只包含一个 connect() 语句。

换句话说,我想知道是否已经有一种我可能没有意识到的有效方法来执行此操作,而不是我迭代 QPushButtonQList。只是效率和整洁的问题。

处理此问题的最佳方法可能是 QButtonGroup。如果您坚持使用自己的列表或者可能有不同的小部件或信号,您仍然可以使用 QSignalMapper.

http://doc.qt.io/qt-5/qbuttongroup.html

http://doc.qt.io/qt-5/qsignalmapper.html