QMetaObject::invokeMethod funktioniert nicht

Alles rund um die Programmierung mit Qt
Antworten
AlphaWolf
Beiträge: 15
Registriert: 4. Oktober 2007 20:13

QMetaObject::invokeMethod funktioniert nicht

Beitrag von AlphaWolf »

Ich habe diese Methode, die ich gerne mit invokeMethod aufrufen würde:

Code: Alles auswählen

void initialize(unsigned long hwnd, int width, int height)

Code: Alles auswählen

QMetaObject::invokeMethod(m_pOgreManager, "initialize", Q_ARG("usigned long", (unsigned long)renderWidget->winId()), Q_ARG("int", renderWidget->width()), Q_ARG("int", renderWidget->height()));
m_pOgreManager ist ein Zeiger auf eine Instanz von der Klasse zu der initialize gehört.

Aber es kompiliert einfach nicht. Mit den Fehlermeldungen kann ich leider auch nichts anfangen:

Code: Alles auswählen

1>.\src\uglyviewer.cpp(34) : error C2974: "QArgument": Ungültiges template-Argument für "T", Typ erwartet.
1>        c:\qt\4.5.0\include\qtcore\../../src/corelib/kernel/qobjectdefs.h(259): Siehe Deklaration von 'QArgument'
1>.\src\uglyviewer.cpp(34) : error C2955: "QArgument": Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.
1>        c:\qt\4.5.0\include\qtcore\../../src/corelib/kernel/qobjectdefs.h(259): Siehe Deklaration von 'QArgument'
1>.\src\uglyviewer.cpp(34) : error C2974: "QArgument": Ungültiges template-Argument für "T", Typ erwartet.
1>        c:\qt\4.5.0\include\qtcore\../../src/corelib/kernel/qobjectdefs.h(259): Siehe Deklaration von 'QArgument'
1>.\src\uglyviewer.cpp(34) : error C2955: "QArgument": Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.
1>        c:\qt\4.5.0\include\qtcore\../../src/corelib/kernel/qobjectdefs.h(259): Siehe Deklaration von 'QArgument'
1>.\src\uglyviewer.cpp(34) : error C2974: "QArgument": Ungültiges template-Argument für "T", Typ erwartet.
1>        c:\qt\4.5.0\include\qtcore\../../src/corelib/kernel/qobjectdefs.h(259): Siehe Deklaration von 'QArgument'
1>.\src\uglyviewer.cpp(34) : error C2955: "QArgument": Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.
1>        c:\qt\4.5.0\include\qtcore\../../src/corelib/kernel/qobjectdefs.h(259): Siehe Deklaration von 'QArgument'
1>ogrewidget.cpp
1>ogremanager.cpp
1>main.cpp
Edit: Ok die Typen in Q_ARG sollten nicht in Anführungszeichen stehen.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Bitte schau dir die Beispiele zu invokeMethod GENAU an. Du übergibst als erstes Argument zu Q_ARG einen String, erwartet wird ein Type...
Antworten