QT中qobject_cast<---*>(sender())用法
(2013-04-15 14:08:34)分类: QT |
1.当某一个Object发出一个signal的时候,它就是一个sender,系统会记录下当前是谁发出出这个signal的,所以你在对应的slot里就可以通过sender()得到当前是谁触发了你的slot,对应的是QObject->d->sender.
2.有可能多个Object的signal会连接到同一个signal(例如多个Button可能会connect到一个slot函数onClick()),因此这是就需要判断到底是哪个Object触发了这个signal,根据sender的不同来进行不同的处理。
2.有可能多个Object的signal会连接到同一个signal(例如多个Button可能会connect到一个slot函数onClick()),因此这是就需要判断到底是哪个Object触发了这个signal,根据sender的不同来进行不同的处理。
例:
Object:
QAction*actDefaultConstraint;
QAction* actFixedSize;
slot:
QAction*act=qobject_cast(sender());
if(act==actDefaultConstraint)
{
layout()->setSizeConstraint(QLayout::SetDefaultConstraint);
}
elseif (act==actFixedSize)
{
layout()->setSizeConstraint(QLayout::SetFixedSize);
}