回答
正如其他人所提到的,Qt和Vala不能携手合作,但这并不意味着不可能让他们合作。主要是了解封面下面发生了什么。
Vala生成C代码,然后将其提供给gcc(或其他安装的编译器)以生成二进制文件。请注意,Vala设计师的主要目标之一是让Vala生产基于C的库。这些可以被接受基于C的绑定的其他语言使用 - Python,Ruby,Java等等。
因此,您可以使用Vala编写一个基于C的库,以便您的Qt C++ GUI应用程序调用。 Vala编译器生成一个.h文件,说明你的Qt应用程序只包含#。
这个问题在于Qt和Vala使用不同的对象系统:用于Qt的QObject,用于Vala的GObject。 (Vala确实允许其他后端,甚至有人认为Vala生成的是Qt C++而不是基于GObject的C,但这在将来还是遥不可及的。)QObject和GObject不兼容,所以为了让QObject与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绑定的工具也可以使用。请注意,这意味着您的Vala代码作为单独的进程运行,而不是进程内库。见http://live.gnome.org/Vala/DBusServerSample和http://live.gnome.org/Vala/DBusClientSamples
这是不太你想要什么,但看看https://live.gnome.org/GObjectIntrospection/GObjectConsume 这带来的GObject内省于C++。使用GObjectConsume,你可以在C++和qt中使用你的vala库。
- 1. 如何在perl中使用Qt GUI(使用Qt Designer创建)?
- 2. 如何在Vala中使用CCode属性?
- 3. 如何在vala中使用gtk/glade
- 4. 如何在vala中使用gettext?
- 5. 在Qt Creator中使用cmake-gui
- 6. 如何在vala脚本中运行pkexec?
- 7. 如何禁止Qt GUI应用程序?
- 8. 在Qt中如何为用户输入nxn矩阵创建GUI?
- 9. 如何在Qt中使用fftw库
- 10. 如何在Qt中使用STL算法?
- 11. Qt中的GUI或Android中的GUI
- 12. 如何使用Visual Studio 2017与Qt开发GUI应用程序?
- 13. 在Qt中使用组框使用Qt
- 14. 如何在vala中使用glib.zlibcompressor压缩多个文件?
- 15. 如何在使用Vala中的Glib.Settings时处理错误?
- 16. 如何在GTK3按钮回调中使用VALA代表?
- 17. 如何在Vala中施放lambda
- 18. 如何在CodeBlocks中设置Vala?
- 19. qt GUI连接
- 20. 替代QImage的使用QT间= GUI
- 21. 音频信号处理使用Qt开发GUI,如何?
- 22. Qt如何使用组合框选择更新GUI QFrame
- 23. 如何使用Qt为我的C++代码制作GUI?
- 24. 如何在GUI中使用QStackedWidget?
- 25. 如何在GUI中使用matplotlib的colormap?
- 26. 如何在Swing GUI中使用BigDecimal?
- 27. 如何在GUI输出中使用printf
- 28. 如何在MVC-gui中使用JUNG2?
- 29. 如何开发新的Qt GUI控件?
- 30. Python:如何在QT GUI中捕获Ctrl-O键按下?
我不认为有任何Vala绑定Qt。 – Mat 2012-04-20 07:24:03
我不认为,也不太明白这种事情的动机。从某种意义上说,Qt就是C++的C++(或者更具体地说就是Gnome C API)。通常情况下,人们只会依赖他们更舒适的方式。 – teukkam 2012-04-20 07:26:56
所以没办法做到这一点? – RobinJ 2012-04-20 08:21:27