2014-10-17 6 views

답변

0

정확하게 이해하면 각 QGraphicsItem에는 고유 한 QComboBox이 있습니다.

QList<QPair<QCheckBox*,QGraphicsItem*> > pair; 
//fill your list with all QCheckBox and QGraphicsItem pointers which you need 

//do connection for each QCheckBox 
for(int i = 0; i <pair.size(); i++) 
{ 
    pair.at(i).first->setObjectName(QString::number(i));//it is a trick, objectName is our position in list 
    connect(pair.at(i).first,SIGNAL(stateChanged(int)),SLOT(myslot())); 
} 

myslot에서 :

int index = sender()->objectName().toInt(); 
if(pair.at(index).first->isChecked()) 
    pair.at(index).second->setFlags(QGraphicsItem::ItemIsMovable);//movable 
else 
    pair.at(index).second->setFlags(pair.at(index).second->flags() & ~QGraphicsItem::ItemIsMovable);//not movable 
당신이 많은 항목이있을 때

그래서 당신은 QSignalMapper 또는 (I 작은 코드 예제를 제공,이 작업을 수행하는 방법에는 여러 가지가 있습니다) 다음과 같은 뭔가를 시도 할 수 있습니다

모든 연결 등을 직접 작성해서는 안되는 가장 중요한 사항은 프로그램에서 수행하는 것입니다. 당신은 약간 다른 것을 할 수 있습니다,하지만 저는 이것을 ~ 10 줄로하는 법을 보여 줬습니다. 가능합니다.