gpt4 book ai didi

c++ - 如何将 QT GUI 加入非 C++ 主程序?

转载 作者:可可西里 更新时间:2023-11-01 18:28:08 34 4
gpt4 key购买 nike

QT 似乎是最好的跨平台 GUI 工具包。不幸的是,它是在 C++ 中,它与许多有趣的语言(例如 *nix 上的 D、Rust、Julia 和 Mono)的绑定(bind)要么不可用,要么没有维护。 GTK 绑定(bind)通常可用,但 GTK 在 Windows 和(尤其是)OS X 上看起来很难看。wxWidgets 绑定(bind)也不错,但对于 D、Rust 和 Julia(对于 Julia,我可以通过 Python两个工具包,但那是缓慢而笨拙的)。

如何将我的 C++ GUI 绑定(bind)到非 C++ 主程序?

最佳答案

这里有几个选项。

首先,您可以通过 C API 绑定(bind)您的 GUI 和主应用程序。 GUI 通常是通过事件循环调用的回调完成的,因此您必须将高级语言中的函数公开为 C 回调,以便从事件循环中调用它们。然后你需要启动 Qt 事件循环。根据您使用的语言,有多种方法可以做到这一点。例如,如果您使用 Rust,您可以制作一个静态或动态库并将您的 C++ GUI 程序链接到它。在这种情况下,您程序的“入口点”将是 C++ 部分。如果您使用像 Julia 这样的东西,您可能希望将 C++ 部分编译为一个库,该库还会公开一个调用 Qt 事件循环的函数。所以在这种情况下,“入口点”将是您的更高级别的部分,它仍然需要回调到 C++ 库中。

第二种方法更接近网络用户界面。您可以使您的 GUI 成为用另一种语言编写的主应用程序的客户端。它们可以通过某些现有协议(protocol)(如 HTTP)交换消息,或者您可以通过低级 TCP 或 UDP 连接实现您自己的协议(protocol),或者您可以使用“中级”消息传递库,如 ZeroMQnanomsg .您也可以考虑完全放弃 Qt,只编写一个 Web 应用程序,将您的程序作为 Web 服务器。我猜这是现在编写 GUI 最跨平台的方式,我想 :)

关于c++ - 如何将 QT GUI 加入非 C++ 主程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26162590/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com