在.NET(WPF)应用程序中集成Qt小部件

时间:2011-01-18 08:11:12

标签: .net wpf qt integration

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

这不是最干净的方式,但将Qt,COM和WPF结合起来并不是最干净的事情^^