回答
正如其他人所提到的,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. 在GUI中使用QT C++
- 3. 如何在Vala中使用緊湊型?
- 4. 如何在vala中使用gettext?
- 5. 如何在vala中使用gtk/glade
- 6. 如何在Vala中使用CCode屬性?
- 7. 如何在Qt gui應用程序中使用QDwm
- 8. 在Qt Creator中使用cmake-gui
- 9. 如何在非gui類中使用Qt Form?
- 10. 如何在Qt中聲明和使用2D整數數組(GUI)?
- 11. 如何使用visual studio在QT中製作GUI?
- 12. 如何在vala腳本中運行pkexec?
- 13. Vala GUI和C++中的邏輯
- 14. 使用Qt創建GUI
- 15. 如何禁止Qt GUI應用程序?
- 16. 如何在不同的Qt線程中調用GUI元素?
- 17. 在Qt中如何爲用戶輸入nxn矩陣創建GUI?
- 18. Qt中的GUI或Android中的GUI
- 19. 如何在Qt中使用STL算法?
- 20. 如何在Qt中使用fftw庫
- 21. 如何使用OpenCv在Qt GUI應用程序中顯示攝像頭源?
- 22. 如何使用Visual Studio 2017與Qt開發GUI應用程序?
- 23. 如何在vala中使用glib.zlibcompressor壓縮多個文件?
- 24. 如何在使用Vala中的Glib.Settings時處理錯誤?
- 25. 如何在GTK3按鈕回調中使用VALA代表?
- 26. 如何在節點對象上使用vala中的xpath
- 27. 在Qt中使用組框使用Qt
- 28. E.CalView在Vala中的用法
- 29. 如何在Vala中施放lambda
- 30. 如何在Vala中獲得gtk3邊框?
我不認爲有任何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