• 3756阅读
  • 0回复

如何实现不同的widget中的子widget同步修改 [复制链接]

上一主题 下一主题
离线ly48694869
 
只看楼主 倒序阅读 楼主  发表于: 2012-03-20
在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里面,不知到哪位高人能指点一下,不胜感谢!!
Qt前途如何??
快速回复
限100 字节
 
上一个 下一个