QAxObject不为COM对象创建槽信号
QAxObject is not creating slots signals for a COM object
我正在使用Qt3.3(并且没有升级的选项,我们及时,完全远离Qt)
当我用
创建一个WebBrowser对象时m_lpWebBrowser = new QAxWidget(this, "ActiveX WebBrowser Plugin");
m_lpWebBrowser->setControl("{8856F961-340A-11D0-A96B-00C04FD705A2}");
信号是为来自浏览器的每个事件创建的(总共55个)
但是,如果我响应DocumentCompleted事件:
pCtrl->QueryInterface(IID_IWebBrowser2, (void**)&brws);
brws->get_Document((IDispatch**)&doc);
m_pDocument = new QAxObject(doc, this, "Document");
其中pCtrl是由事件返回的IDispatch,我得到一个对象,这显然是一个HTMLDocument(我可以查询任何IHTMLDocument(n)接口的接口),但它只有三个信号:
signal(const QString&,int,void*)
propertyChanged(const QString&)
exception(int,const QString&,const QString&,const QString&)
如果我使用更迂回的方法为文档获取IDispatch*并从中构造QAxObject*,则会出现相同的问题。
在这两种情况下,很明显setControl从来没有被新的QAxObject调用过,这似乎是构建信号所必需的。我需要访问的特定接口是IHTMLDocumentEvents。
我做错了什么?
我无法解决为什么这不起作用的问题,但事实证明,编写自己的事件接收器并不像看起来那么令人生畏。QAxEventSink提供了一个简单的示例,并演示了您实际上只需要实现Invoke函数。
相关文章:
- 多线程.如果我使用信号量,我可以在开始时创建很多线程还是应该只有几个线程?
- 如何使用拖放功能和点击信号函数QT创建标签
- 在C 中创建时间变化的信号
- 生产者 - 消费者生产商创建2个元素POSIX信号量
- Linux C++ 创建具有最大值的信号量
- 创建 std::thread c++11 时收到的 SIGABRT 信号
- Qt创建动态对象并为同一信号分配不同的功能
- 创建信号和插槽qt4gui生成器
- 在正常应用程序中,当信号量第一次由服务创建时,它被拒绝访问
- C++/QT 值创建旋转框小部件时更改(整数)信号
- 从类中创建一个信号来调用外部函数
- Do信号创建新线程
- 为什么以及何时应该使用IPC_NEW来创建信号量
- 是否可以在切换QTreeWidgetItem复选框时创建一个信号
- 我可以使用带有QTimer和信号的C++对象创建优化吗
- 如何将信号附加到动态创建的对象的插槽
- 带有插槽和信号的QThread似乎不会创建新的线程
- (Qt)从按钮的QButtonGroup创建信号
- 动态创建自定义小部件的新实例并连接信号和插槽(Qt)
- 如何模拟QTreeWidget itemClicked信号而不创建派生类