많은 qgraphicsitem이 있으며 qgraphicsitem이 이동 가능한지 여부를 설정하는 확인란을 사용하고 싶습니다. 지금 생각해 볼 수있는 것은 qgraphicsitem 각각에 대해 setFlag (ItemIsMovable)를 사용하고 확인란의 신호를 사용하여 트리거하는 것입니다. 더 효율적이고 효과적인 방법이 있습니까?qgraphicsitem을 동적으로/불가능하게 동적으로 만드는 방법은 무엇입니까?
0
A
답변
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 줄로하는 법을 보여 줬습니다. 가능합니다.