Qtに関する世界観です。Linux(X11周辺)やGTK+も参照のこと。
KDEで採用されている、X11のウィジェットツールキット。昔はこれがオープンソースでなくて、GNOMEと言うもう一つのプロジェクトを作る必要があった。今はオープンソース。Trolltechと言う会社で開発されていた。
後日注記:Qtはかつては「フリーでないにもかかわらずKDEで使われているツールキット」として、GNUなどから問題視され、GNOMEなどが開発されるきっかけになりました。今のQtは商用ライセンスのほかにLGPL/GPL版があり、名実ともにQtはオープンソースになったので、そのような批判は当たりません。Qtを採用するKDEを安心して自由に使うことができます。
Wikipedia
テーマ集サイトとしてはstore.kde.orgがあります。
ソースコード
2025.12.18編集
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のサンプルコードは以下:
以下はGoogleのAIが書いた、Qt WebEngine (Chromiumベース)を用いた簡単なWebブラウザ。
#include <QApplication>
#include <QWebEngineView>
#include <QUrl>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// WebViewの作成
QWebEngineView *view = new QWebEngineView();
// 初期URLを設定
view->setUrl(QUrl("https://www.google.com"));
view->resize(1024, 768);
view->show();
return app.exec();
}
2026.02.19
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