既存の C++ プロジェクトの Qt UI
-
20-09-2019 - |
質問
すでに C++ プログラムを作成しているので、その GUI を作成したいと考えています。Qt が素晴らしいツールであることは理解していますが、Qt には独自のクラスがあるため、非常に混乱しています。例えば:Qt には String の代わりに QString という名前のクラスがあります。
C++ コードと Qt コードを C++ で混合できるかどうか疑問に思っています。
解決
はい、あなたは非常に簡単にQtとSTLを混在することができます。
GUIがQString
sをとるが、静かに、これらのフォームstd::string
又はchar*
を作成し、QStrings
はtoStdString()
又はtoAscii()
で変換することができるのQtから返されます。
Qtはコレクションクラスのセットが含まれていますが、それらを使用する必要はありません。
Qtは近代的なC ++のように見えるのは良い仕事をして、そこに信号およびスロットイベントメカニズムを処理するためにいくつかの「エクストラ」はあるが、これらはコードに比べて、ビルド環境をより複雑化している。
編集:おかげで法案
他のヒント
私は習慣一緒STDのC ++コードとQtコードを混合するお勧めします。
ちょうどGUIのためにする必要があり、あなたのC ++コードは、論理Qtのコードである、のは、言ってみましょう。 MVC / MVPパターンを使用するか、同様に、あなたのロジックとUIを分離します。
このように、それはUIを使用せずに/を使用してコードを実行できるようにするには、将来的に容易になるだろう。
要するに、はい、できます!例えば、QStringのは基本的に文字列であり、もしToASCII()メソッドを持っているので、簡単にあなたのプロジェクトのためのQtを使用することができます。あなたは、Visual StudioにはQtを統合するいくつかの問題に実行するかもしれませんが、あなたがC ++コードおよび(C ++である)Qtのコードを混在させることができるようになります(あなたがそれを使用していると仮定)。
ええ! Qtは、あなたのC ++コードで使用できるものです。 Qtは主にGUIのためですが、それはソケット、コンテナ、ネットワークのための良いクラスです... あなたは、STLや他の正常クラスやQtはあなたを提供するものを自由に使用できます。 最大のポイントは、あなたがメインコンパイルする前に、あなたのコード内でのQtを使用する場合は、それは準備ができてあなたがコンパイラのために作るためにメタコンパイルを行うべきであるということです。 あなたは気付くはずの一つは、Qtは、それはそれは、Windows、Linux、およびMac OSをサポートしていますが、それは他のプラットフォームで使用できないことを意味し、標準的ではないということです。
組み合わせて使用することもできます。
C++ には長い歴史があり、STL の実装とサポートは言語とともに進化してきました。元 Trolltech チームは、STL 実装の品質と可用性を十分に管理できず、Qt ライブラリを依存させることができないと判断したのだと思います。その結果、Qt には独自の QTL、QtAlgorithms ヘッダー、および QString が存在します。
彼らは、STL との互換性を保つために注意を払っています。
- ほとんどのコンテナには、STL コンテナと同様のインターフェイスがあります (例:イテレータアクセス、push_back()、empty() など)
- Qt コンテナは STL コンテナとの間で変換できます (例:QVector::toStdVector、QList::fromStdList)
- Qt コンテナは STL アルゴリズムで使用できます
- QString は、toStd(W)String / fromStd(W)String を使用して std::string および std::wstring との間で変換できます。
個人的には、std::string よりも QString の方が好きです。QString の方が使いやすく、強力です。
はい、できます。
実際に、C ベースの関数セット用の Qt-GUI ラッパーを作成しました。Qt の統合には問題はありませんが、低レベルの C (メモリ リークが発生します...) だけが問題です。
ここを参照してください: http://code.google.com/p/qhocr/