2013-04-10 3 views
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를 사용할 수 없습니다.

이 정보가 필요합니까?

답변

관련 문제