0
개체 A가 스레드에서 실행된다고 가정 해 보겠습니다. QAxObject 인스턴스 W 오브젝트 B에 대한 포인터를가집니다. 오브젝트 B는 QAxObject에 대한 포인터를가집니다.두 스레드간에 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를 사용할 수 없습니다.
이 정보가 필요합니까?