[solved] Qt 4.3.2: QSignalSpy - "no such signal ...&quo
Verfasst: 7. Mai 2008 20:49
hallo,
ich bin vllt. mal wieder blind, aber habe das so oft gesehen problem, dass mir (zur laufzeit) gemeldet wird "no such signal ...", obwohl keine der bekannten ursachen (Q_OBJECT, qmake ausfuehren usw.) zuzutreffen scheint.
ich nutze Qt 4.3.2 unter x11.
erstmal etwas code:
element.h:
test.h:
test.cpp:
zuletzt noch das pro-file fuers testen (testIt.pro):
fuehre ich nun
aus, bekomme ich ausgegeben
wie gesagt, das problem scheint beim QSignalSpy oder in der Element-klasse zu liegen, ich weiss aber nicht genau, wo.
ich hoffe, mir kann jemand bezueglich des "no such signal ..." helfen.
danke schon einmal im Voraus!
mfg,
julian
ich bin vllt. mal wieder blind, aber habe das so oft gesehen problem, dass mir (zur laufzeit) gemeldet wird "no such signal ...", obwohl keine der bekannten ursachen (Q_OBJECT, qmake ausfuehren usw.) zuzutreffen scheint.
ich nutze Qt 4.3.2 unter x11.
erstmal etwas code:
element.h:
Code: Alles auswählen
#include <QObject>
class Element: public QObject
{
Q_OBJECT
public:
// [ ... ]
enum errType
{
INVALID_START_POINT,
INVALID_END_POINT,
};
public slots:
void setStart( const double &p_start );
void setEnd( const double &p_end );
// [ ... ]
signals:
void error( errType p_err );
// [ ... ]
};Code: Alles auswählen
#include <QObject>
#include <QtTest>
#include <QSignalSpy>
#include <QList>
#include <QVariant>
#include "element.h"
class Test : public QObject
{
Q_OBJECT
private slots:
void testElement();
};Code: Alles auswählen
#include "test.h"
void Test::testElement()
{
Element elem1;
QVERIFY( elem1.start() == 0.0 );
QVERIFY( elem1.end() == 1.0 );
//////////// HIER SCHEINT DER FEHLER ZU LIEGEN (??) ///////////
QSignalSpy spy1( &elem1, SIGNAL( error( Element::errType ) ) );
elem1.setStart( 4.2 );
elem1.setEnd( 13.37 );
QVERIFY( spy1.count() == 2 );
spy1.clear();
elem1.setStart( 42.0 );
elem1.setEnd( 1.337 );
QVERIFY( spy1.count() == 2 );
QList< QVariant > args1 = spy1.at( 0 );
QList< QVariant > args2 = spy1.at( 1 );
QVERIFY( args1.at( 0 ).canConvert< Element::errType >() == true );
QVERIFY( args1.at( 0 ) == Element::INVALID_START_POINT );
QVERIFY( args1.at( 1 ).canConvert< Element::errType >() == true );
QVERIFY( args1.at( 1 ) == Element::INVALID_END_POINT );
}
QTEST_MAIN( Test )Code: Alles auswählen
TARGET = bin/testIt
TEMPLATE = app
CONFIG += qtestlib
HEADERS += src/element.h src/test.h
SOURCES += src/element.cpp src/test.cpp
OBJECTS_DIR = tmp
UI_DIR = tmp
MOC_DIR = tmp
RCC_DIR = tmpCode: Alles auswählen
qmake testIt.pro && make && bin/testItCode: Alles auswählen
********* Start testing of Test *********
Config: Using QTest library 4.3.2, Qt 4.3.2
PASS : Test::initTestCase()
QWARN : Test::testElement() QSignalSpy: No such signal: 'error(Element::errType)'
FAIL! : Test::testElement() 'spy1.count() == 2' returned FALSE. ()
Loc: [src/test.cpp(12)]
PASS : ::cleanupTestCase()
Totals: 2 passed, 1 failed, 0 skipped
********* Finished testing of Test *********
bash-3.2$ ich hoffe, mir kann jemand bezueglich des "no such signal ..." helfen.
danke schon einmal im Voraus!
mfg,
julian