Я нашел ноль документация на эту тему (Я искал не в том месте? Мне кажется странным).Как использовать Qt GUI с Vala?
Мне просто нужно использовать Qt GUI для моего приложения Vala. Примером может служить оценка.
Я нашел ноль документация на эту тему (Я искал не в том месте? Мне кажется странным).Как использовать Qt GUI с Vala?
Мне просто нужно использовать Qt GUI для моего приложения Vala. Примером может служить оценка.
Как уже упоминалось, Qt и Vala не работают рука об руку, но это не значит, что невозможно заставить их сотрудничать. В основном это понимание того, что происходит под обложками.
Vala генерирует код C, который затем подается в gcc (или другой установленный компилятор) для создания двоичного файла. Обратите внимание: одна из главных целей дизайнеров Вала заключалась в том, чтобы Вала создавала библиотеки на основе C. Затем они могут использоваться другими языками, которые принимают привязки на основе C - Python, Ruby, Java и т. Д.
Итак, вы можете использовать Vala для кодирования библиотеки на основе C, к которой обращается ваше приложение Qt C++ GUI. Компилятор Vala создает файл .h, в котором ваше приложение Qt просто # включает.
Проблема в том, что Qt и Vala используют разные объектные системы: QObject для Qt, GObject для Vala. (Вала допускает другие бэкэнды, и есть даже некоторые мысли о том, что Вала выпускает Qt C++ вместо GObject-based C, но это далеко в будущем.) QObject и GObject несовместимы, и поэтому для QObjects говорить с GObjects, вам нужно сделать много ручной работы на основе C. (Написание GObject в C довольно многословно, поэтому привлекательность 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 вы можете использовать свою библиотеку vala в C++ и qt.
Я не думаю, что есть какие-либо привязки Валы для Qt. – Mat
Я тоже не думаю, что не вижу мотивации для такого рода вещей. В некотором роде Qt является C++, что Vala для C (или более конкретно, API Gnome C). Обычно люди просто идут либо в зависимости от того, с чем им удобнее. – teukkam
Так что нет способа это сделать? – RobinJ