2013-08-02 5 views
1

QSignalSpyforeach 루프를 사용하려면 어떻게해야합니까?QSignalSpy에서 foreach 루프를 사용하는 방법

foreach(const QList<QVariant> &args, mySignalSpy) 
{ 
    Q_ASSERT(args.count() == 2); 
    QVariant arg0 = args[0]; 
    QVariant arg1 = args[1]; 
    doSomething(arg0, arg1); 
} 

이것은 내가 오류입니다 :

/usr/local/Trolltech/Qt-4.8.2-shared/include/QtTest/qsignalspy.h: In instantiation of ‘QForeachContainer<T>::QForeachContainer(const T&) [with T = QSignalSpy]’: 
MyTester.cxx:843:64: required from here 
/usr/local/Trolltech/Qt-4.8.2-shared/include/QtCore/qobject.h:333:5: error: ‘QObject::QObject(const QObject&)’ is private 

답변

7

foreach 통과 컨테이너의 복사본을 만듭니다

이것은 내가하고 싶은 것입니다. QSignalSpyQObject을 상속하므로 복사 할 수 없습니다. 이 두 가지 사실로 인해 오류가 발생합니다.

가장 간단한 해결 방법은 보통 for 루프를 사용하는 것입니다. 목록의 비 QObject 사본을 만들어 반복에 사용할 수도 있습니다.

QList< QList<QVariant> > list = mySignalSpy; 
foreach(const QList<QVariant> &args, list) { 
    //... 
} 
+0

해결 방법이 실패한 이유에 대한 설명에 감사드립니다. +1 –