ich habe eine Klasse, die ein QAxObject enthält, mit dem ein Motor angesteuert wird. Während der Motor sich bewegt, blockiert die Funktion den GUI Thread. Ich möchte den Aufruf daher in einen eigenen Thread auslagern und habe es mit QtConcurrent probiert. Allerdings wird dann die move() Funktion des AxControls nicht mehr gefunden. Konkret sieht das bei mir so aus:
Code: Alles auswählen
class MyMotor
{
...
MyMotorController* controller; // Klasse, die das Ax Objekt wrappt.
...
}
int MyMotor::moveMotor(double angle)
{
...
QFuture<int> f1 = QtConcurrent::run(controller, &MyMotorController::move, angle);
f1.waitForFinished();
}
class MyMotorController
{
...
QAxObject* axMotor;
...
}
MyMotorController::move(double angle)
{
...
axMotor->dynamicCall("move(double)", angle);
}
Mache ich den Aufruf, ohne in MyMotor::moveMotor QtConcurrent zu benutzen, dann klappt's. Im Thread scheint also das QAxObject leer zu sein ... hat jemand eine gute Idee, wo mein Fehler liegt?QAxBase: Error calling IDispatch member move: Member not found