Fre*_*Ben 1 c++ foreach qt qt4 qtestlib
我如何使用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
foreach制作传递容器的副本.QSignalSpy继承QObject因此无法复制.这两个事实导致错误.
最简单的解决方法是使用通常的for循环.您还可以创建列表的非QObject副本并使用它来迭代:
QList< QList<QVariant> > list = mySignalSpy;
foreach( const QList<QVariant> &args, list ) {
  //...
}