假设你有一百个按钮,需要知道是哪一个按钮被单击了。
如果采用一百个槽函数,那可真是坑爹了。所以我们必须把他们都连接到同一个槽,这在QT中是可以的。
那么问题来了,我怎么判断是哪一个按钮被单击了呢?
很简单哦,有个sender()函数。
尝试搜索,网上的说法就一行代码: QPushButton *btn=qobject_cast<QPushButton*>(sender());
然后就说可以了,简直是大坑啊,很多人还是不知所云的好吗?
首先,建立一个项目,我这里偷懒,直接用ui界面,加上两个按钮,按钮1和按钮2
连接到同一个槽。槽函数这么写:
举个栗子,
QPushButton *btn=qobject_cast<QPushButton*>(sender());if(btn->objectName()=="hello")
{
qDebug()<<"交流群271251545";//对,我就是这么打广告的
}
else if(btn->objectName()=="world")
{
qDebug()<<"逼了狗了,按钮2被单击了呢!";
}
这里的btn不做什么特殊用途,就是用来获取指针的,把获取到的指针赋给它。通过判断objectname来判断是哪个按钮被单击了。
完整代码直接上个图好了:
同样的,其它控件也都是这样子的道理哦。