gpt4 book ai didi

qt - 如何在 Vala 中使用 Qt GUI?

转载 作者:行者123 更新时间:2023-12-04 10:10:05 26 4
gpt4 key购买 nike

我发现关于这个主题的文档为零(我是否在错误的地方搜索?这对我来说似乎很奇怪)。

我只需要能够为我的 Vala 应用程序使用 Qt GUI。一个例子将不胜感激。

最佳答案

正如其他人所提到的,Qt 和 Vala 不能携手合作,但这并不意味着不可能让他们合作。它主要是关于了解幕后发生的事情。

Vala 生成 C 代码,然后将其馈送到 gcc(或其他已安装的编译器)以生成二进制文件。请注意,Vala 设计师的主要目标之一是让 Vala 生成基于 C 的库。然后这些可以被其他接受基于 C 的绑定(bind)的语言使用——Python、Ruby、Java 等等。

因此,您可以使用 Vala 编写 Qt C++ GUI 应用程序调用的基于 C 的库。 Vala 编译器生成一个 .h 文件,您的 Qt 应用程序仅 #includes。

问题在于 Qt 和 Vala 使用不同的对象系统:QObject 用于 Qt,GObject 用于 Vala。 (Vala 确实允许其他后端,甚至有人认为 Vala 会生成 Qt C++ 而不是基于 GObject 的 C,但这还遥遥无期。) QObject 和 GObject 不兼容,因此您的 QObjects 可以与 GObjects 对话,你需要做很多基于 C 的手动工作。 (用 C 语言编写 GObject 非常冗长,因此 Vala 的魅力在于隐藏所有这些。)

但这是可以完成的。请注意 Qt will even use GLib's event loop rather than its own ,允许代码混合在事件驱动的应用程序中。

我不能衷心推荐上面的,但理论上是可以的,主要是因为 C++ 代码可以很容易地调用 C 代码。

另一个值得考虑的可能性是让 Vala 代码成为 DBus 服务器,而您的 Qt 代码成为 DBus 客户端。 DBus 是一个花哨的 IPC,因此它并不适合所有应用程序,但它可能适合您的应用程序。这很有吸引力,因为 Vala 可以轻松地生成 DBus 客户端和服务器(它们看起来像普通对象)。也可以使用生成 Qt DBus 绑定(bind)的工具。请注意,这意味着您的 Vala 代码作为单独的进程运行,而不是进程内库。见 http://live.gnome.org/Vala/DBusServerSamplehttp://live.gnome.org/Vala/DBusClientSamples

关于qt - 如何在 Vala 中使用 Qt GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10241802/

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