it-swarm-ja.tech

QtにはCインターフェイスがありますか?

ウェブ上で矛盾する答えを見つけました-ある人はそうだと言う人もいれば、そうでないと言う人もいます。公式のQtドキュメントでも詳細を見つけることができませんでした。 QtにはCバインディングがありますか?

59
Ree

短い答え:いいえ。

C用の包括的なGUIツールキットが必要な場合は、GTK +を使用できます。

Qtを使用するには、mustにC++コンパイラが必要です。しかし、「アプリケーションロジック」をCで記述し、Cコンパイラでコンパイルし、C++パーツ(Qtを備えたGUI)に慎重にリンクできないことを意味するものではありません。このアプリケーションロジックは汎用で、他の実行可能ファイル(pure-C、混合C/C++など)にリンク可能です。すべては必要なものに依存します。

ただし、QtはC++には最適であり、Cでパーツを保持したい場合でも、特定のプロジェクトにC++を使用することを決定するのには十分な理由です。

60
Eli Bendersky

残念ながらそうではありませんが、ビジネスロジックを実現するライブラリのセットとしてプログラムを作成し、Cで記述することができます。その後、小さなC++を使用して、ライブラリとして記述したものをQTを使用してGUIにバインドできます。

これは、後でライブラリを再利用し、さまざまなツールキットまたは言語で他の多くのフロントエンドを実装できるため、優れたアプローチです!

21
Dacav

いいえ。QtはC++です。しかし、GUI要素と相互作用/作成しないすべての場所でCスタイルのコードを記述し、選択したC++コンパイラですべてをコンパイルできます。

18
Cory Petosky

以前はQtCというBindingがありましたが、それを検索すると this thread

リチャード・デールから:

Objective-CおよびQt#バインディングで使用されるCバインディングを維持するために使用していました。しかし、SmokeライブラリはCバインディングではありませんが、はるかに優れているため、代わりにsmokeを使用するためにQtCバインディングを廃止しました。

煙はここにあります 。 QtC Bindingsについての明確な参照をどこにも見つけることができませんでしたが、聞いたことを覚えています。

12
Sean McMillan

私はそうは思わない。 Qtは常に「クラスライブラリ」と呼ばれ、ビルドにはC++コンパイラが必要です。 QTをラップし、CレイヤーにAPIを提供するDLL /インターフェイスを作成/検索してみてください。

4

常にC++をCに変換するだけのC++コンパイラを使用し、生成されたマングルされた名前を呼び出すことができます。

2
R..

Qtは、Meta Object Compiler(MOC)を使用して、シグナルとスロットのマジックを機能させます(たとえば、ユーザーのシグナルとスロットの定義に基づいて関数コールバックを作成します)。 Qtは実際のC++ではありませんが、実際にはQt独自の構文であり、C++によく似ていますが、シグナルとスロットがあります。これにより、「外部「c」」が使用できなくなります。

0
Brian