スレッドで実行されているオブジェクト A を考えてみましょう。これは、QAxObject インスタンスとオブジェクト B へのポインターを持ちます。オブジェクト B は、QAxObject へのポインターを持ちます。
オブジェクト A がスレッドを作成し、オブジェクト B をスレッド内に移動します。
#ifndef OBJECTA_H
#define OBJECTA_H
#include <QtCore/QObject>
#include <QtCore/QThread>
#include <QAxObject>
#include "ObjectB.h"
class ObjectA : public QObject
{
Q_OBJECT
public:
ObjectA(QObject *parent = 0) : QObject(parent)
{
thread = new QThread();
activeX = new QAxObject();
objectB = new ObjectB(activeX);
objectB->moveToThread(thread);
ObjectA::connect(objectB, SIGNAL(someSignal()), this, SLOT(someSlot()));
thread->start();
}
protected slots:
void someSlot();
private:
QThread *thread;
QAxObject *activeX;
ObjectB *objectB;
};
#endif // OBJECTA_H
#ifndef OBJECTB_H
#define OBJECTB_H
#include <QtCore/QObject>
#include <QAxObject>
class ObjectB : public QObject
{
Q_OBJECT
public:
ObjectB(QAxObject *axObject, QObject *parent = 0) : QObject(parent)
{
activeX = axObject;
}
signals:
void someSignal();
private:
QAxObject *activeX;
};
#endif // OBJECTB_H
オブジェクト B は、オブジェクト A と共有されている QAxObject を操作できますか?
私はそれが不可能になると感じています。現在、次のエラーが発生しています: QAxBase: Error calling IDispatch member NewProject: Unknown error
。
また、スレッド A もスレッド B も QAxObject を使用できません。
これに関する情報はありますか?