【发布时间】:2017-10-05 15:40:25
【问题描述】:
我正在开发一个新的 Qt 应用程序,我需要在其中嵌入一个第三方 ActiveX 控件;我在最后几天学习了 Qt Quick Controls 2.0,但我担心 ActiveX 控件只能嵌入到 Qt Widgets 应用程序中。对吗?
如果您能就我的问题提出任何教程/示例,那也很棒,因为对于像我这样的新手来说,官方的似乎有点太难了。
非常感谢!
【问题讨论】:
标签: qt activex qtquick2 qtwidgets
我正在开发一个新的 Qt 应用程序,我需要在其中嵌入一个第三方 ActiveX 控件;我在最后几天学习了 Qt Quick Controls 2.0,但我担心 ActiveX 控件只能嵌入到 Qt Widgets 应用程序中。对吗?
如果您能就我的问题提出任何教程/示例,那也很棒,因为对于像我这样的新手来说,官方的似乎有点太难了。
非常感谢!
【问题讨论】:
标签: qt activex qtquick2 qtwidgets
我们能否将 Qt Quick (QML) 与 ActiveX Qt 嵌入式小部件一起使用 在一个应用中?
简短回答:是的。
详细信息:我们需要将 Qt Quick 和 ActiveX 都嵌入到它们自己的小部件容器中。
从一开始就构建基于小部件的 Windows Qt 应用程序。 Example。
使用 QWidget::createWindowContainer() 将 QML UI 嵌入到小部件中,这是一种方法。
嵌入或创建一个独立的QAxWidget 以在其中保存 ActiveX 控件。
处理第三方 ActiveX 的最佳方式是导入其类型库,如 Qutlook Example (ActiveQt)。
附: QML 不会阻止您在 Qt 中执行 ActiveX,但它们是两种不同类型的 UI,并且不共享同一个窗口。它们只能嵌入到其他 Qt 小部件中。我正在使用 Qt/QML/ActiveX 开发此类混合应用程序,但没有完整的指南。也许细节太多了,而且您需要处理 ActiveX 接口的细节,这是一个单独的主题。
【讨论】:
QQuickWidget 而不是QQuickView + QWidget::createWindowContainer()