在MWidget中有一个combobox,现在
实例化MWidget为widget1和widget2,且将他们加入到一个
QTabWidget当中,当widget1中的combobox修改时也能修改widget2中的combobox,因为MWidget的实例化数量是可变的,所以最好不是手动连接2个combobox的
信号槽。否则添加或删除MWidget不方便,有什么更好的方法么?
以前想过将MWidget实例化的时候就将自己添加到一个static的QVector<QObject*>里面,将所有的combobox的修改信号都连接过来,接着在每个MWidget的实例中搜索名字为combobox的子对象,如果存在则setCurrentIndex,代码实现如下:
void MWidget::comboboxIndexChanged(int index){
QMutexLocker locker(&mutex);
QVectorIterator<QObject*> iter(instanceVector);
while(iter.hasnext()){
QObject* inst = iter.next();
if(inst == this)
continue;
QComboBox* cbx = inst->findChildren<QComboBox>(sender()->objectName()).first();
cbx->setCurrentIndex(index);
}
}
代码差不多就是这个感觉,也能同步修改,但是程序在修改频繁的情况下容易假死掉,而且是死在deadlock里面,不知到哪位高人能指点一下,不胜感谢!!