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属性传送到这个槽中。 展开
我的问题是这样的,我动态生成了几十个统一类型的控件,比如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属性传送到这个槽中。 展开
1个回答
展开全部
你可以在槽中调用sender()这个函数获得一个QWidget类型的指针.这个指针指向出发这个槽的控件.
然后用static_cast<QCheckBox*>(QWidget*) 把这个指针换成QCheckBox*类型.
然后就可以访问checkBox的name了.
函数都是手写的.有可能没写对不过大体思路如此了.
然后用static_cast<QCheckBox*>(QWidget*) 把这个指针换成QCheckBox*类型.
然后就可以访问checkBox的name了.
函数都是手写的.有可能没写对不过大体思路如此了.
追问
非常谢谢你,上面提出的问题解决了。
下面还有一个问题,就是我知道了ObjectName,我怎么去找这个Object呢?有没有上面方法吗?
追答
有两种办法.
一种就是用childs();返回所以的object.再把他们全部转化为QCheckBox,这个时候返回的object中有很都都不是QCheckBox.所以要判断转化是否成功.
依次取得其name属性,再与原有的name对比来找到那个object.
另外就是是用一链表把所有checkbox保存起来.同上这样来对比找到那个object.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询