Qtに関する世界観です。Linux(X11周辺)やGTK+も参照のこと。
KDEで採用されている、X11のウィジェットツールキット。昔はこれがオープンソースでなくて、GNOMEと言うもう一つのプロジェクトを作る必要があった。今はオープンソース。Trolltechと言う会社で開発されていた。
Wikipedia
テーマ集サイトとしてはstore.kde.orgがあります。
ソースコード
Qtにはいくつかの特徴がある。
まず、クロスプラットフォームであること。「一度コードを書けばどこでも動く」というコンセプトのもと、LinuxのX11だけではなく、Windows, Mac, モバイルなど多くの環境で動く。特に組み込み製品において実績が多い。
次に、ネイティブと同等の効率性・スピードがあること。初期のQtは独自の描画エンジンを持っていて、ターゲットプラットフォームの見た目をエミュレートしていたが、今ではネイティブに用意されているAPIを使うようになり、C++で書かれていることもあって、ネイティブと同等の見た目と効率性・スピードを持つようになった。
そして、Qtにはシグナル&スロットと呼ばれる仕組みがある。これはObserverパターンを実装したもので、素のC++では実現しづらい仕組みだが、QtではC++の記述の中にアノテーションを記述することでこれを可能としている。ここで、moc(メタオブジェクトコンパイラ)と呼ばれるC++の変換ツールを使う。
そして、QtはGUIアプリケーション開発のためのウィジェットツールキットだけではなく、コマンドラインのツールやサーバーデーモンの開発にも使える多くの機能を有する。
このようなQtは、見た目にも美しく、スピードも速く、KDEなどのオープンソースプロジェクトでの採用実績もあり、商用ライセンスとしては組み込み用途に実績がある。Qtのライセンスがフリーではなかったり、GPLと互換でなかったりしたことから、GNOMEの開発など多くの問題があったが、今では商用ライセンス以外にGPL/LGPLでの利用が認められている。LGPLでの利用が許可されたこともあり、商用製品で使うためには大きな障害は無くなったとみられる。
詳しくは以下の英語版Wikipediaの記事が参考になります。
Qtのサンプルコードは以下:
KDEを参照のこと。
QtにはPythonバインディングのPyQtがあります。これを用いることでPythonでQtプログラミングができます。
また、最近ではQt/KDEのRubyのバインディングも開発されています。
以下からウィジェットについての説明に触れることができる。英語だが頑張って読んでほしい。
Qtについての情報は以下から参照できる。
QtだけではなくKDE全般の情報は以下も参考になる。
QtはそもそもクロスプラットフォームのC++のGUIツールキットとして開発されており、Windowsでも動く。ソースコードをコンパイルし直すことで、QtアプリケーションをLinuxからWindowsに移植できる。
特に、Windows APIでGUIをやっていると不安だとかうんざりした人におすすめ。旧ボーランドのDelphiのように、Windows APIのオープンソースなオルタナティブとしても利用できる。
Qt向けの統合開発環境。
Qt向けのフォームエディター。
KDEアーキテクチャ、KDEデスクトップ、KDEアプリケーションを参照のこと。
X11のAPIについては、X11やその子ページを参照のこと。
GUIの開発全般についてはGUI開発を参照のこと。
Qt