【发布时间】:2015-10-02 06:05:16
【问题描述】:
在 Qt/C++ 中,我有一系列按钮,我想通过单个事件处理程序运行它们以进行单击,并知道单击了哪个按钮。
有没有办法将按钮单击事件列表连接到一个插槽?例如,我创建了一个QList<QPushButton *>,然后使用单个connect() 语句来处理此列表的&QPushButton::clicked 信号,并将其映射到单个SLOT(onButtonClicked(QWidget *))。
那里有关键字——单。当然,我可以迭代一个列表,但我想知道是否有一种方法可以在列表迭代之外只有一个 connect() 语句。
换句话说,我想知道是否已经有一种我可能没有意识到的有效方法来执行此操作,而不是我迭代QPushButton 的QList。这只是高效和整洁的问题。
【问题讨论】:
-
你有一个例子here。
-
@Tarod 不完全是。我一直在寻找一种在迭代之外而不是在迭代内部的更整洁的方式。就像以某种方式将整个按钮列表传递给 connect() 调用而无需迭代。
-
我认为没有这种方法。您将始终必须通过信号映射器或直接与插槽建立每个按钮的单独连接。
-
您可以创建 1 个不带任何参数的插槽,并在内部使用
sender()方法 +qobject_cast。
标签: c++ qt qt-signals