Seite 1 von 1

QMetaObject::invokeMethod funktioniert nicht

Verfasst: 20. April 2009 18:55
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.

Verfasst: 20. April 2009 19:36
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...