Есть ли у Qt интерфейс C? - PullRequest
       23

Есть ли у Qt интерфейс C?

57 голосов
/ 13 ноября 2009

Я нашел противоречивые ответы в Интернете - некоторые говорят, что да, некоторые говорят, что нет. Я также не смог найти никаких деталей в официальной документации Qt. Так есть ли у Qt привязки C или нет?

Ответы [ 7 ]

57 голосов
/ 13 ноября 2009

Краткий ответ: нет.

Если вам нужен полный инструментарий GUI для C, вы можете использовать GTK +.

Чтобы использовать Qt, вы должны иметь компилятор C ++. Но это не значит, что ваша «логика приложения» не может быть написана на C, скомпилирована с помощью компилятора C и тщательно связана с частью C ++ (GUI с Qt). Эта логика приложения может быть общей, связываемой с другими исполняемыми файлами (pure-C, смешанный C / C ++ и т. Д.). Все зависит от того, что вам нужно.

Qt отлично подходит для C ++, и это хорошая причина, чтобы решить использовать C ++ для конкретного проекта, даже если вы все еще хотите сохранить детали в C.

20 голосов
/ 13 июля 2010

К сожалению, нет, но вы можете сформировать вашу программу как набор библиотек, реализующих вашу бизнес-логику, и написать их на C, тогда вы можете использовать небольшой C ++, чтобы связать то, что вы написали как библиотеку, с GUI, используя QT.

Это хороший подход еще и потому, что позже вы сможете повторно использовать свою библиотеку и реализовать множество других внешних интерфейсов с помощью различных наборов инструментов или языков!

18 голосов
/ 13 ноября 2009

Нет. Qt - это C ++. Но вы могли бы просто написать код в стиле C везде, где нет взаимодействия / создания элементов графического интерфейса, и скомпилировать все это с помощью выбранного вами компилятора C ++.

11 голосов
/ 13 ноября 2009

Раньше был Binding, называемый QtC, но при его поиске выявляется этот поток :

От Ричарда Дейла:

Раньше я поддерживал привязки C, которые использовались привязками Objective-C и Qt #. Но библиотека Smoke намного лучше, хотя это не привязка к Си, и я удалил привязки QtC, чтобы вместо этого использовать дым.

Дым здесь . Я нигде не смог найти четкой ссылки на привязки QtC, хотя помню, что слышал о них.

4 голосов
/ 13 ноября 2009

Я не думаю, что это так. Qt всегда описывается как «библиотека классов», и для сборки требуются компиляторы C ++. Вы можете попытаться написать / найти DLL / интерфейс, который будет обернут вокруг QT и предоставит API для слоя C.

2 голосов
/ 13 июля 2010

Вы всегда можете использовать компилятор C ++, который просто переводит C ++ в C, затем вызывает искаженные имена, которые он генерирует, и т. Д .: -)

0 голосов
/ 24 октября 2017

Qt использует мета-объектный компилятор (MOC), чтобы заставить магию сигнала и слота работать (например, выполнять обратные вызовы функций на основе определений пользовательских сигналов и слотов). Таким образом, Qt на самом деле не является C ++, но на самом деле является собственным синтаксисом Qt, который во многом похож на C ++, но с сигналами и слотами. Это делает «внешнее« с »» бесполезным.

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