1

foreachでループを使用するにはどうすればよいQSignalSpyですか?

これは私がやりたいことです:

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
4

1 に答える 1

8

foreach渡されたコンテナのコピーを作成します。QSignalSpy継承するQObjectため、コピーできません。これら 2 つの事実により、エラーが発生します。

最も簡単な回避策は、通常のforループを使用することです。リストの非 QObject コピーを作成し、それを使用して反復することもできます。

QList< QList<QVariant> > list = mySignalSpy;
foreach( const QList<QVariant> &args, list ) {
  //...
}
于 2013-08-02T20:23:53.147 に答える