2013-01-23 5 views
0

이전에 슬롯 안에 사용하도록 만든 QMap을 사용하고 싶습니다. 나는 this을 시도했지만 여전히 작동하지 않았다. (나는 바보 같은 짓을하고 있다고 생각한다.) 여기에 제가 사용하고있는 코드가 있습니다.슬롯에 QMap 사용

생성자 : 나는 신호 editingFinished를 보낼 때마다

QMap <int, QList<int> > tiles; 
connect(ui->lineEdit, SIGNAL(editingFinished()), this, SLOT(someSlot())); 

지금, 나는 someSlot이 값이 QMap에 있는지 확인하고 있는지 확인하여 다양한 조건을 계속 진행합니다. 문제는 QMap을 슬롯에 어떻게 전달합니까? Qt는 매개 변수가있는 슬롯을 허용하지 않는 것 같습니다.

+0

사용할 슬롯을 어떻게 알 수 있습니까? – cppguy

+0

일부 슬롯 (타일)과 같은 것을하고 싶습니까? 그게 나를 위해 작동하지 않기 때문에. ** 오류 : 정의되지 않은 템플릿의 암시 적 인스턴스화 'QMap >' 사례 2 : _t-> someSlot (reinterpret_cast < 'QMap > (_ a [1]))); break ** ** ^ – UzSh

답변

1

슬롯은 Qt가 호출하는 함수입니다. 그것이 어떻게 불려지는지에 대한 마법은 있지만 기능 일뿐입니다. 인자는 (정규 함수처럼) 시그널로 전달되고, 결국 Qt는 그 인자 (또는 아마도 그 인자의 복사본)를 수신자 슬롯에 전달합니다. Qt에는 연결을 정의 할 때 신호를 한 것처럼 많은 인수를 슬롯에 전달할 필요가없는 논리가 있지만 여기서는 설명하지 않습니다.

이와 같은 연결에서 이름으로 인수를 전달할 수 없습니다.

당신은 당신의 타일 someSlot을 (구현 클래스의 멤버 변수가 될 객체를 가질 수 있습니다) 또는 someSlot에 연결된 신호에 타일을 통과해야합니다 (const를 QMap> &)

나의 추천 타일을 스택 변수가 아닌 멤버 변수로 만드는 것입니다.

+0

멤버 변수는 클래스에서 올바른 것으로 선언 된 변수입니까? 왜냐하면 나는'QMap >이라는 선언을 할려고했기 때문에 'tiles'에 불완전한 타입이 있습니다. 죄송합니다 바보 같은 실수가 있다면 그것은 무엇을 의미합니까? – UzSh

+0

오, 나는 너무 바보 같았다. 그것을 무시하십시오. 어쨌든 나는 지금 일하고있다. 고마워. – UzSh