【问题标题】:Integrating a Qt widget in a .NET (WPF) application在 .NET (WPF) 应用程序中集成 Qt 小部件
【发布时间】:2011-06-10 22:38:36
【问题描述】:

我有一个工作的 Qt 小部件,我想在 .NET 应用程序中显示它。该应用程序正在使用 WPF,我想将该小部件嵌入 UI 中的某个位置。

在 WPF 应用程序中嵌入 Qt 小部件的推荐方法是什么?我应该使用 C++/CLI 并将 HWND 传递给 WPF,还是只使用 ActiveQt?我担心 Qt 事件机制,因为没有人会调用 QApplication::exec()

【问题讨论】:

  • 看起来 ActiveQt 是你最好的选择。自从问了这个问题,你找到好的解决方案了吗?

标签: .net wpf qt integration


【解决方案1】:

您需要做的是使用 QAxServer 将您的小部件转换为 COM 对象:

http://developer.qt.nokia.com/doc/qt-4.8/activeqt-server.html

这会将您的对象转换为 COM 对象。然后,您应该能够这样引用它。但是,这确实不是跨 3 种技术(Qt、COM、WPF)工作的正常做法。

为了来回通信,您需要设置绑定:

http://developer.qt.nokia.com/doc/qt-4.8/qaxbindable.html

【讨论】:

    【解决方案2】:

    ActiveQt 是否仍然受到积极支持?!只是想知道......

    在我的一个项目中,我遇到了类似的问题。我通过将 Qt 初始化(QApplication 和 ::exec())包装在我通过 PInvoke 调用的函数中解决了这个问题,然后只使用 QWidgets(QWidget::getDC() 返回本机句柄)。

    这不是最干净的方式,但是结合Qt、COM和WPF根本不是最干净的东西^^

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 2019-09-05
      • 1970-01-01
      • 2013-08-30
      • 2011-07-04
      • 2020-09-05
      相关资源
      最近更新 更多