Qt有一个C接口吗?

我在网上发现了相互矛盾的答案 – 有人说这样做,有些人却说不。 我无法在官方的Qt文档中find任何细节。 那么Qt是否有C绑定?

简短的回答:不。

如果您需要用于C的全面的GUI工具包,则可以使用GTK +。

要使用Qt,你必须有一个C ++编译器。 但是,这并不意味着你的“应用程序逻辑”不能用C语言编写,用C编译器编译,并且仔细链接到C ++部分(带有Qt的GUI)。 这个应用程序逻辑可以是通用的,可以链接到其他可执行文件(纯C,混合C / C ++等)。这一切都取决于你需要什么。

Qt对于C ++来说是非常好的,但是对于一个特定的项目来说,使用C ++是一个很好的理由,即使你仍然想保留C

不幸的是,您可能会将您的程序设置为一套基于您的业务逻辑的库,然后将它们写入C中,然后您可以使用一点C ++将使用QT的库作为库编写为库。

这也是一个很好的方法,因为以后你可以重用你的库,并用不同的工具包或语言来实现许多其他的前端。

Qt是C ++。 但是你可以在任何地方编写C风格的代码,这些代码不会交互/创buildGUI元素,并且可以用你select的C ++编译器编译整个代码。

曾经有一个称为QtC的绑定,但是search它揭示了这个线程 :

从理查德戴尔:

我用来维护Objective-C和Qt#绑定使用的C绑定。 但是Smoke库虽然不是一个C绑定,但它更好,我放弃了使用烟雾的QtC绑定。

烟在这里 。 我一直无法在任何地方find清楚的QtC绑定参考,尽pipe我记得听说过它们。

我不这么认为。 Qt总是被描述为一个“类库”,它需要C ++编译器来构build。 您可以尝试编写/查找将环绕QT的DLL /接口,并向C层提供API。

你总是可以使用C ++编译器来简单地将C ++转换为C,然后调用它生成的重名名称等。:-)

Qt使用元对象编译器(MOC)来使信号和时隙的魔法工作(例如根据用户信号和插槽定义进行函数callback)。 所以Qt并不是真正的C ++,而是Qt自己的语法,就像C ++一样,只是带有信号和插槽。 这使得“外部”“无用”。