Создание C ++ Qt Gui для логики Python - PullRequest
0 голосов
/ 27 января 2019

Мне подарили логику Python, для которой мне нужно создать графический интерфейс. Я хочу использовать Qt для этой цели, и в идеале я хотел бы программировать его на C ++ без использования Qt Creator.

Каковы рекомендуемые способы объединения графического интерфейса C ++ Qt и логики Python, возможно, с управляющим слоем, который находится либо в Python, либо в C ++?

Из-за предшествующего исследования мне известны некоторые инструменты, такие как PySide, PythonQt, SWIG, Shiboken и другие (хотя я до сих пор их не использовал), и очень просто импортировать файлы * .ui в Python. , но количество возможных путей немного ошеломляет, и я пока не могу придумать «хорошее решение».

В идеале, я бы не использовал бы Qt Designer, но создавал бы GUI (окна, пользовательские виджеты, вспомогательные классы и т. Д.) Вручную, объединял их в один или несколько классов, которые я предоставляю Python / C ++ управляющий уровень (обертками? DLL?), который управляет связью между GUI и логикой.

Как мне этого добиться?

Краткая версия этого вопроса может быть просто: Как я могу использовать Qt C ++ GUI с логикой Python?

1 Ответ

0 голосов
/ 27 января 2019

Вы можете создать свое приложение с графическим интерфейсом, используя qt c ++ и обернуть логику контроллера, написанную в API Python, встраивая API Python.https://docs.python.org/2/extending/embedding.html Но если у вас есть много методов, которые будет скучно делать, и у вас могут быть утечки памяти, если они плохо написаны на стороне c ++.

Другим решением может быть использование вызовов rpc для pythonAPI с помощью веб-службы (остальные API / JSON RPC .... и т.д. ...).Приложение Qt является клиентом python rest api.таким образом вы отделяете код C от кода Python.Вы можете сделать это, используя вызовы json rpc или другие API-интерфейсы, такие как jcon (https://github.com/joncol/jcon-cpp).. Вы также сможете найти python и QT xml rpc api, способные общаться друг с другом.

swig (http://swig.org) может иметь некоторые возможности, но лучше использовать другой способ: вызов c func из python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...