我想知道,一旦按钮发出clicked(),有什么方法可以找出发出它的按钮而不会超载click()函数? (我有一堆功能几乎相同但文字不同的按钮,这是每个按钮的定义元素。)
提前致谢!
答案 0 :(得分:10)
在您的插槽中,您可以调用sender()
函数来获取向您发送clicked()
信号的QObject。它返回QObject *
。使用qobject_cast
将QObject *
转换为QPushButton *
。
文档here。
答案 1 :(得分:6)
您可能想要使用QSignalMapper。
在您的情况下,如果它只是您感兴趣的文本,则将每个按钮上的clicked()
信号连接到信号映射器上的map()
插槽,然后设置字符串映射{{1 }}。然后,信号映射器将以其自身setMapping( QObject * sender, const QString & text )
信号的形式重新发出信号,并显示所单击按钮的正确文本。