2009-08-28 15 views
5

私はすでにC++プログラムを作成しており、そのためのGUIを作成したいと考えています。私はQtがすばらしいツールであることを認識していますが、Qtには自分のクラスがあり、私はかなり混乱してしまいます。例:Stringの代わりにQStringにQStringという名前のクラスがあります。既存のC++プロジェクトのQt UI

C++コードとQtコードをC++で混在させることができますか?

+0

JFYIはQTではなくQTで書かれています。ありがとう。 –

+0

ありがとう。私はちょうどそれを元に戻しました〜 – Lily

答えて

7

はい、QtとSTLを非常に簡単に混在させることができます。

GUIはQString秒を要するが、静かに、これらのフォームstd::string又はchar*が作成され、Qtのから返さQStringstoStdString()又はtoAscii()で変換することができます。

Qtにはコレクションクラスが含まれていますが、それらを使用する必要はありません。

Qtは現代的なC++のように見えますが、シグナルやスロットイベントのメカニズムを扱うためのいくつかの「エクストラ」がありますが、これらはコードよりもビルド環境にとって複雑です。

編集:ありがとうございました

+2

QString :: toStdString()/ QString :: toStdWString()を使用することもできます。 – Bill

+0

QStringはstd :: stringから暗黙的に構築可能ではありません。そのようなコンストラクタはありません。 'error: 'std :: string'から非スカラー型 'QString' requested'への変換しかし、' QString x = myStdString.c_str(); 'と言うことができます。 – leemes

0

はい、できます!例えば、QStringは本質的に文字列であり、toAscii()メソッドを持っているので、あなたのプロジェクトに簡単にQtを使うことができます。あなたは、Visual StudioにはQtを統合するいくつかの問題に実行するかもしれませんが(あなたがそれを使用していると仮定すると)、あなたは、C++コードとQtコード(Cである++)

0

ええを混在させることができるようになります! QtはC++コードで使用できるものです。 Qtは主にGUI用ですが、ソケット、コンテナ、ネットワークなどのクラスに適しています。 STLや他の通常のクラスやQtが提供するクラスは自由に使用できます。 最大のポイントは、メインコンパイルの前にコードでQtを使用すると、メタコンパイルを実行してコンパイラを準備できることです。 Windows、Linux、Mac OSをサポートしていますが、Qtは標準ではありません。他のプラットフォームでは使用できません。

0

これらは一緒に使用できます。

C++には長い歴史があり、STLの実装とサポートは言語とともに進化しました。私は、Trolltech社の前のチームは、Qtライブラリをそれに依存させるためにSTL実装の品質と可用性を十分にコントロールできないと判断しました。その結果、Qtには独自のQTL、QtAlgorithmsヘッダーとQStringがあります。

  • ほとんどのコンテナはSTLのものに似たインターフェースを持っている(例えば:イテレータアクセス、一back()、(空)、など)
  • は、彼らはSTLと互換性を持たせるための世話をしています

  • QtのコンテナはSTLコンテナへ/から変換することができる(例:QVector :: toStdVector、QListに:: fromStdList)
  • QtのコンテナはSTLアルゴリズムで使用することができる
  • QStringのがSTDへ/から変換することができる:: stringとstd :: wstring toStd(W)String/fromStd(W)String

私はQStringがstd :: stringよりも好きです。使いやすく、より強力です。

0

はいできます。

私は実際にCベースの関数のセットのためのQt-GUIラッパーを作った。 Qtの統合に問題はなく、低レベルのC(メモリをリークします...)だけです。

はこちらをご覧ください:http://code.google.com/p/qhocr/

1

が、私は文句を言わない一緒のSTD C++コードとQtコードを混合をお勧めします。

言い換えれば、あなたのC++コードはロジックであり、QtコードはGUI用であるはずです。 MVC/MVPパターンを使用するか同様に、ロジックとUIを分離します。

このように、将来はUIを使用する/使用しないでコードを実行する方が簡単になります。

関連する問題