Как вы используете производный интерфейс от ActiveQT? - PullRequest
2 голосов
/ 14 августа 2011

У меня есть, как мне кажется, довольно простой интерфейс в COM. Я хотел бы реализовать это в activeqt. Я могу заставить работать прототип ATL, но я бы предпочел использовать виджеты и сигналы qt, а не элементы управления COM.

Я могу загрузить ATL COM dll в python-комтипе и запустить help(ATLDll), а соответствующее расширение интерфейса -

Methods inherited from comtypes.gen.<guid>.ITest:
   Init(...)
      method Init

Я не уверен, как получить то же самое в activeqt. ATL использует этот код для определения интерфейса (я думаю, это в автоматически сгенерированном файле _i.h):

MIDL_INTERFACE(<guid>)
ITest : public IDispatch
{
public:
    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Init( 
        /* [in] */ IDispatch *obj) = 0;

};

, а затем определение класса наследуется от

public IDispatchImpl<ITest>

Я пытался смешать activeqt и ATL, но пока что безуспешно. Должен ли я использовать dumpcpp вместо этого? [edit] dumpcpp полезен, если вы хотите вызвать существующий COM-объект из Qt, но не помогает извлечь интерфейс для использования в activeQt. [/ edit] Это способ переопределить интерфейс без смешивания ATL и activeqt? Мне интересно, являются ли инструменты моей работы qt и ATL, пытающиеся генерировать idl, источником моей борьбы ...

Спасибо!

...