qt 信号和槽之间传送数据的问题。

我现在也在遇到信号和槽的问题。我的问题是这样的,我动态生成了几十个统一类型的控件,比如QcheckBox,我想把所有QcheckBox的stateChanged(int)... 我现在也在遇到信号和槽的问题。
我的问题是这样的,我动态生成了几十个统一类型的控件,比如QcheckBox,我想把所有QcheckBox的stateChanged(int)信号都关联到同一个槽中,同时在槽中我想取得发送信号者的name属性。
已经写好的代码如下:
QCheckBox *checkBox;
checkBox = new QCheckBox(text,parent);
checkBox->setObjectName(objectName);
checkBox->setGeometry(rect);
connect(checkBox,SIGNAL(stateChanged(int)),this,SLOT(saveProcessChanges(int)));

问题出现在我信号可以发送到槽中,但是不知道可以通过什么方法把checkBox的name属性传送到这个槽中。
展开
 我来答
创作者XXGDQ4kMbU
2012-05-18 · TA获得超过1281个赞
知道小有建树答主
回答量:371
采纳率:66%
帮助的人:424万
展开全部
你可以在槽中调用sender()这个函数获得一个QWidget类型的指针.这个指针指向出发这个槽的控件.
然后用static_cast<QCheckBox*>(QWidget*) 把这个指针换成QCheckBox*类型.
然后就可以访问checkBox的name了.

函数都是手写的.有可能没写对不过大体思路如此了.
追问
非常谢谢你,上面提出的问题解决了。
下面还有一个问题,就是我知道了ObjectName,我怎么去找这个Object呢?有没有上面方法吗?
追答
有两种办法.
一种就是用childs();返回所以的object.再把他们全部转化为QCheckBox,这个时候返回的object中有很都都不是QCheckBox.所以要判断转化是否成功.
依次取得其name属性,再与原有的name对比来找到那个object.

另外就是是用一链表把所有checkbox保存起来.同上这样来对比找到那个object.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式