コンテンツにスキップ

「Qt」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
update url
AshMyzk (トーク | 投稿記録)
同期
 
(5人の利用者による、間の18版が非表示)
1行目: 1行目:
[[Category:ウィジェットツールキット]]
[[Category:ウィジェットツールキット]]
[[en:Qt]]
[[en:Qt]]
[[es:Qt]]
[[ru:Qt]]
[[ru:Qt]]
[[zh-hans:Qt]]
[[zh-hans:Qt]]
6行目: 7行目:
{{Related|KDE}}
{{Related|KDE}}
{{Related|Qt と GTK アプリケーションの外観の統合}}
{{Related|Qt と GTK アプリケーションの外観の統合}}
{{Related|GTK+}}
{{Related|GTK}}
{{Related articles end}}
{{Related articles end}}
[https://www.qt.io/ Qt] はクロスプラットフォームのアプリケーション・ウィジェットツールキットです。標準の C++ を使っていますが言語機能を強化するために特別なコードジェネレータ ([https://doc.qt.io/qt-5.12/moc.html Meta Object Compiler] もしくは moc) とマクロをフルに活用しています。主な特徴として:
[https://www.qt.io/ Qt] はクロスプラットフォームのアプリケーション・ウィジェットツールキットです。標準の C++ を使っていますが言語機能を強化するために特別なコードジェネレータ ([https://doc.qt.io/qt-5.12/moc.html Meta Object Compiler]、またの名を ''moc'') とマクロをフルに活用しています。主な特徴として:

* 主要なデスクトッププラットフォームと複数のモバイルプラットフォームで動作します。
* 主要なデスクトッププラットフォームと一部のモバイルプラットフォームで動作します。
* 完全な国際化サポート。
* 幅広い国際化サポート。
* SQL データベースのアクセス、XML のパース、スレッド管理、ネットワークのサポートを提供するライブラリと、ファイルを処理するための統一されたクロスプラットフォームのアプリケーションプログラミングインタフェース (API)。
* SQL データベースのアクセス、XML のパース、スレッド管理、ネットワークのサポートを提供するライブラリと、ファイルを処理するための統一されたクロスプラットフォームのアプリケーションプログラミングインタフェース (API)。


Qt フレームワークは主要な開発プラットフォームの一つとして、[[KDE]] ソフトウェアコミュニティや [[VLC media player|VLC]], [[VirtualBox]], [[Opera]], [[Mathematica]], [[Skype]] などオープンソース・プロプライエタリ問わず様々なアプリケーションで使われています。
Qt フレームワークは主要な開発プラットフォームの一つとして、[[KDE]] ソフトウェアコミュニティや [[VLC]][[VirtualBox]][[Mathematica]] など重要なオープンソース・プロプライエタリなアプリケーションで使われています。


== インストール ==
== インストール ==

現在[[公式リポジトリ]]では2つのバージョンの Qt が利用可能です。以下のパッケージで[[Pacman|インストール]]できます:
Qt 6.x および 5.x は[[公式リポジトリ]]から入手できます。Qt のレガシーバージョン(4.x および 3.x) は [[AUR]]から入手できます。以下のパッケージで[[Pacman|インストール]]できます:
* '''Qt 6.x''' は {{Pkg|qt6-base}} パッケージでインストールできます。ドキュメントは {{Pkg|qt6-doc}} パッケージに入っています。
* '''Qt 5.x''' は {{Pkg|qt5-base}} パッケージでインストールできます。ドキュメントは {{Pkg|qt5-doc}} パッケージに入っています。
* '''Qt 5.x''' は {{Pkg|qt5-base}} パッケージでインストールできます。ドキュメントは {{Pkg|qt5-doc}} パッケージに入っています。
* '''Qt 4.x''' は {{AUR|qt4}} パッケージでインストールできます。ドキュメントは {{AUR|qt4-doc}} パッケージに入っています。
* '''Qt 4.x''' は {{AUR|qt4}} パッケージでインストールできます。ドキュメントは {{AUR|qt4-doc}} パッケージに入っています。
* '''Qt 3.x''' は {{AUR|qt3}} パッケージでインストールできます。ドキュメントは {{AUR|qt3-doc}} パッケージに入ってい
* '''Qt 3.x''' は {{AUR|qt3}} パッケージでインストールできます。ドキュメントパッケージはありせん


== デフォルトの Qt ツールキット ==
== デフォルトの Qt ツールキット ==


Qt のパッケジは {{ic|/usr/bin}} バイナリ (例: ''qmake'') を提供しません。代わりに {{ic|-qt5}}, {{ic|-qt4}}, {{ic|-qt3}} ボリックリンクが提供されます (例: {{ic|qmake-qt5}}, {{ic|qmake-qt4}}, {{ic|qmake-qt3}})。このため Qt3/4アプリケョンではコンパイルが失敗するかもせん
{{AUR|qtchooser}}{{Broken package link|package not found}} をインストルすることで、{{ic|/usr/bin}} 内の Qt のバイナリ (例: ''qmake'') を、それ古いバージョン (例: ''qmake-qt4'' や ''qmake-qt3'') を指すように変更できます (デフォルトでは Qt 5ョン (例: ''qmake-qt5'') を指ていす)


{{Note|現在、{{AUR|qtchooser}}{{Broken package link|package not found}} は {{Pkg|qt5-base}} と衝突しています。これを本当に必要としているならば、{{ic|/usr/local}} にインストールすることができます。しかし、公式にはもはやサポートされていません。{{Bug|51308}} を参照してください。}}
{{AUR|qtchooser}} をインストールすることで {{ic|/usr/bin}} に在来のバイナリ (例: ''qmake'') を復活させて使用する Qt ツールキットを設定できます。デフォルトでは Qt5 が使われます。

{{Warning|{{AUR|qtchooser}} は {{Pkg|qt5-base}} と衝突します。本当に必要な場合は {{ic|/usr/local}} にインストールすることができますが、公式にはサポートされていません [https://bugs.archlinux.org/task/51308]。}}


=== 環境変数を使う ===
=== 環境変数を使う ===

デフォルトの Qt ツールキットを定義するには、{{ic|QT_SELECT}} [[環境変数]]を作成します。例えば、Qt4 に設定するには、シェルの初期化ファイル ({{ic|~/.bash_profile}} や {{ic|~/.zprofile}} など) で {{ic|1=export QT_SELECT=4}} を実行してください。
{{ic|QT_SELECT}} [[環境変数]]を使用して、デフォルトの Qt ツールキットを定義することができます。例えば、Qt ''n'' を使う場合、{{ic|1=QT_SELECT=''n''}} を設定します。


=== 設定ファイルを使う ===
=== 設定ファイルを使う ===

{{ic|/etc/xdg/qtchooser/}} ディレクトリの ''.conf'' ファイルに {{ic|~/.config/qtchooser/default.conf}} からシンボリックリンクを張ればデフォルトの Qt ツールキットを設定できます。例えば、Qt4 に設定するには {{ic|/etc/xdg/qtchooser/4.conf}} から {{ic|~/.config/qtchooser/default.conf}} にリンクするシンボリックリンクを作成します:
{{Out of date|{{AUR|qtchooser}}{{Broken package link|package not found}} はもはや公式にサポートされていません。}}

{{ic|/etc/xdg/qtchooser/}} ディレクトリ内の ''.conf'' ファイルを指すシンボリックリンク {{ic|~/.config/qtchooser/default.conf}} を作成することで、デフォルトの Qt ツールキットを設定できます。例えば、Qt 4 に設定するには、{{ic|/etc/xdg/qtchooser/4.conf}} を指すシンボリックリンク {{ic|~/.config/qtchooser/default.conf}} を作成します:

$ ln -s {{ic|/etc/xdg/qtchooser/4.conf}} {{ic|~/.config/qtchooser/default.conf}}
$ ln -s {{ic|/etc/xdg/qtchooser/4.conf}} {{ic|~/.config/qtchooser/default.conf}}


== 外観 ==
== 設定 ==

=== Qt4 ===
=== Qt 5 のスタイル ===
Qt4 のアプリケーションは動作しているデスクトップ環境の挙動を模倣しようとします、ただし、なにか問題が発生したり、設定がハードコードされている場合は別です。

* KDE Plasma では、KDE で選択された Qt スタイルが使われます。''KDE システム設定'' (''systemsettings5'') を使って設定することができます。設定項目は ''Appearance > Application Style > Widget Style'' にあります。
{{Out of date|{{Pkg|qt5-base}} はもはや QGtkStyle を使用しません。}}
* Cinnamon, GNOME, Xfce では GTK+ が使われます ([[Qt と GTK アプリケーションの外観の統合#QGtkStyle|QGtkStyle]])。

Qt5 は使われているデスクトップ環境によって使用するスタイルを決定します:

* KDE Plasma では、実際に選択されている Qt スタイルが使われます。''KDE 5 System Settings'' (''systemsettings'') を使うことで設定できます。設定項目は ''Appearance > Application Style > Widget Style'' にあります。
* Cinnamon、GNOME、MATE、LXDE、Xfce では GTK が使われます ([[Qt と GTK アプリケーションの外観の統合#QGtkStyle|QGtkStyle]])。
* 他のデスクトップ環境では、Fusion が使われます。

特定のスタイルを強制するには、{{ic|1=QT_STYLE_OVERRIDE}} [[環境変数]]を設定してください。特に、[[GTK]] のテーマを使いたい場合は {{ic|gtk2}} に設定してください (注: GTK のスタイルを使うには、以下で説明されている Qt スタイルプラグインのインストールが必要です)。Qt 5 アプリケーションは {{ic|-style}} フラグもサポートしており、特定のスタイルを使って Qt 5 アプリケーションを起動することができます。

Qt 5 には次のスタイルが含まれています: ''Fusion''、''Windows''。他のスタイルは別途インストールできます:

* {{App|Breeze|Plasma Desktop 用の Breeze ビジュアルスタイルのアートワーク、スタイル、アセット。|https://invent.kde.org/plasma/breeze|{{Pkg|breeze}}}}
* {{App|Oxygen|KDE Oxygen スタイル。|https://invent.kde.org/plasma/oxygen|{{Pkg|oxygen}}}}
* {{App|Lightly|Lightly は、視覚的にモダンでミニマルであることを目指す、breeze テーマのフォークです。|https://github.com/Luwx/Lightly|{{AUR|lightly-git}}{{Broken package link|package not found}}}}

* {{App|QtCurve|KDE と GTK のウィジェットスタイルの設定セット。|https://invent.kde.org/system/qtcurve|{{Pkg|qtcurve-qt5}}{{Broken package link|package not found}}}}
* {{App|Adwaita-Qt|Qt アプリケーションを GNOME Shell に調和させるスタイル。|https://github.com/MartinBriza/adwaita-qt|{{AUR|adwaita-qt5-git}}}}
* {{App|Qt style plugins|''GTK''、''Cleanlooks''、''Motif''、''Plastique'' などの Qt5 の追加スタイルプラグイン。|https://code.qt.io/cgit/qt/qtstyleplugins.git|{{AUR|qt5-styleplugins}}}}
* {{App|Kvantum|''Adapta''、''Arc''、''Ambiance'' などの人気な GTK テーマと同じ見た目のスタイルが含まれている、マスタマイズ可能な SVG ベースのテーマエンジン。|https://github.com/tsujan/Kvantum/tree/master/Kvantum|{{Pkg|kvantum}}}}

=== Qt 4 のスタイル ===

Qt 4 のアプリケーションは動作しているデスクトップ環境の挙動を模倣しようとします、ただし、なにか問題が発生したり、設定がハードコードされている場合は別です。

* KDE Plasma では、実際に選択されている Qt スタイルが使われます。''KDE システム設定'' (''systemsettings'') を使って設定することができます。設定項目は ''Appearance > Application Style > Widget Style'' にあります。
* Cinnamon、GNOME、Xfce では GTK が使われます ([[Qt と GTK アプリケーションの外観の統合#QGtkStyle|QGtkStyle]])。
* 他のデスクトップ環境では、Windows が使われます。
* 他のデスクトップ環境では、Windows が使われます。


Qt4 アプリケーションのルックアンドフィールを変更したい場合は、({{AUR|qt4}} パッケージに含まれている) ''Qt 設定'' ({{ic|qtconfig-qt4}}) ツールが使えます。''QtConfig'' を使うことで Qt4 アプリケーションの外観をとてもシンプルに設定することができ、現在の Qt のスタイル・色・フォントなど高度なオプションまで簡単にアクセスすることが可能です。
Qt4 アプリケーションのルックアンドフィールを変更したい場合は、({{AUR|qt4}} パッケージに含まれている) ''Qt 設定'' (''qtconfig-qt4'') ツールが使えます。''QtConfig'' を使うことで Qt 4 アプリケーションの外観をとてもシンプルに設定することができ、現在の Qt のスタイル・色・フォントなど高度なオプションまで簡単にアクセスすることが可能です。


{{Note|''GTK+'' スタイルを使う場合、色やフォントの設定は無視され、GTK+ 2 から継承されます。}}
{{Note|''GTK'' スタイルを使う場合、色やフォントの設定は無視され、GTK 2 から継承されます。}}


Qt は設定情報を全て {{ic|/etc/xdg/Trolltech.conf}} (システム全体) や {{ic|~/.config/Trolltech.conf}} (ユーザー個別) に保存しています。このファイルには外観と関係ない情報が多く含まれているため見づらいですが、変更をファイルの最後に加えれば前の値を上書きできます (変更は {{ic|[Qt]}} ヘッダーの下に追加してください)。
Qt は設定情報を全て {{ic|/etc/xdg/Trolltech.conf}} (システム全体) や {{ic|~/.config/Trolltech.conf}} (ユーザー個別) に保存しています。このファイルには外観と関係ない情報が多く含まれているため見づらいですが、変更をファイルの最後に加えれば前の値を上書きできます (変更は [Qt] ヘッダーの下に追加してください)。


例えば、テーマを QtCurve に変更するには、以下を追加します:
例えば、テーマを QtCurve に変更するには、以下を追加します:

{{hc|~/.config/Trolltech.conf|<nowiki>
{{hc|~/.config/Trolltech.conf|<nowiki>
...
...
56行目: 90行目:
</nowiki>}}
</nowiki>}}


Qt4 には次のスタイルが含まれています: ''CDE'', ''Cleanlooks'', ''GTK+'', ''Motif'', ''Plastique'', ''Windows''。他のスタイルは公式リポジトリや [[AUR]] からインストールできます (ほとんどのスタイルは KDE Plasma デスクトップ用に作られています):
Qt 4 には次のスタイルが含まれています: ''CDE''''Cleanlooks''''GTK''''Motif''''Plastique''''Windows''。他のスタイルは別途インストールできます:

* {{App|Breeze|Plasma Desktop 用の Breeze ビジュアルスタイルのアートワーク、スタイル、アセット。|https://cgit.kde.org/breeze.git|{{AUR|breeze-kde4}}}}
* {{App|[[Wikipedia:Oxygen Project|Oxygen]]|KDE Oxygen スタイル。|https://cgit.kde.org/oxygen.git|{{Pkg|oxygen-kde4}}{{Broken package link|{{aur-mirror|oxygen-kde4}}}}}}
* {{App|QtCurve|KDE と GTK のウィジェットスタイルの設定セット。|https://cgit.kde.org/qtcurve.git|{{Pkg|qtcurve-qt4}}{{Broken package link|{{aur-mirror|qtcurve-qt4}}}}}}
* {{App|Adwaita-Qt|Qt アプリケーションを GNOME Shell に調和させるスタイル。|https://github.com/MartinBriza/adwaita-qt|{{AUR|adwaita-qt4}}}}
* {{App|Adwaita-Qt|Qt アプリケーションを GNOME Shell に調和させるスタイル。|https://github.com/MartinBriza/adwaita-qt|{{AUR|adwaita-qt4}}}}


=== Qt5 ===
=== Qt スタイルシート ===
Qt5 は使われているデスクトップ環境によって使用するスタイルを決定します:
* KDE Plasma では、KDE Plasma で選択されている Qt テーマが使われます。''KDE 5 System Settings'' (''systemsettings5'') を使うことで設定できます。設定項目は ''Appearance > Application Style > Widget Style'' にあります。
* Cinnamon, GNOME, MATE, LXDE, Xfce では GTK+ が使われます ([[Qt と GTK アプリケーションの外観の統合#QGtkStyle|QGtkStyle]])。
* 他のデスクトップ環境では、Fusion が使われます。


特定のスタイルを使いたい場合、{{ic|QT_STYLE_OVERRIDE}} 環境変数を設定します。特に、[[GTK+]] のテーマを使いたい場合は {{ic|gtk2}} に設定してください (GTK+ のスタイルを使うには Qt スタイルプラグインのインストールが必要です)。Qt5 アプリケーションは {{ic|-style}} フラグもサポートしており、特定のスタイルを使って Qt5 アプリケーションを起動することができます。

Qt5 には次のスタイルが含まれています: ''GTK+'', ''Fusion'', ''Windows''。他のスタイルはパッケージからインストールできます:
* {{App|Breeze|Plasma Desktop 用の Breeze ビジュアルスタイルのアートワーク、スタイル、アセット。|https://cgit.kde.org/breeze.git|{{Pkg|breeze}}}}
* {{App|Oxygen|KDE Oxygen スタイル。|https://cgit.kde.org/oxygen.git|{{Pkg|oxygen}}}}
* {{App|QtCurve|KDE と GTK のウィジェットスタイルの設定セット。|https://cgit.kde.org/qtcurve.git|{{Pkg|qtcurve-qt5}}}}
* {{App|Adwaita-Qt|Qt アプリケーションを GNOME Shell に調和させるスタイル。|https://github.com/MartinBriza/adwaita-qt|{{AUR|adwaita-qt5}}}}
* {{App|Qt スタイルプラグイン|''GTK+'', ''Cleanlooks'', ''Motif'', ''Plastique'' などの Qt5 の追加スタイルプラグイン。|http://code.qt.io/cgit/qt/qtstyleplugins.git|{{Pkg|qt5-styleplugins}}}}

Qt4 アプリの設定をする {{ic|qtconfig-qt4}} のように、{{pkg|qt5ct}} を使うことで Qt5 アプリのルックアンドフィールをカスタマイズすることができます。

=== Qt スタイルシート ===
Qt アプリケーションのルックアンドフィールをカスタマイズするのにスタイルシート、シンプルな CSS ファイルを使うこともできます。スタイルシートを使えば、アプリケーションの全てのウィジェットの外観を修正できます。
Qt アプリケーションのルックアンドフィールをカスタマイズするのにスタイルシート、シンプルな CSS ファイルを使うこともできます。スタイルシートを使えば、アプリケーションの全てのウィジェットの外観を修正できます。


他のスタイルを使ってアプリケーションを実行するには、次のように実行してください:
他のスタイルを使ってアプリケーションを実行するには、次のように実行してください:

$ qt_application -stylesheet ''style.qss''
$ qt_application -stylesheet ''style.qss''


Qt スタイルシートの詳細は [https://doc.qt.io/qt-5/stylesheet-reference.html 公式ドキュメント] や [http://thesmithfam.org/blog/2009/09/10/qt-stylesheets-tutorial/ チュートリアル] を見て下さい。スタイルシートの例は [http://kde-apps.org/content/show.php/roxydoxy?content&#61;125979 Dolphin modification] を見て下さい。
Qt スタイルシートの詳細は [https://doc.qt.io/qt-5/stylesheet-reference.html 公式ドキュメント] や他の[http://thesmithfam.org/blog/2009/09/10/qt-stylesheets-tutorial/ チュートリアル] を見て下さい。スタイルシートの例はこの [https://kde-apps.org/content/show.php/roxydoxy?content=125979 Dolphin の変更]を見て下さい。


=== GTK+ と Qt ===
=== GTK と Qt ===
GTK+ と Qt のアプリケーションを使っているならば、それらの見た目が上手く調和しないことに気づくでしょう。GTK+ スタイルと Qt スタイルを調和させたい場合は [[Qt と GTK アプリケーションの外観の統合]]を読んで下さい。


GTK と Qt のアプリケーションを使っているならば、それらの見た目が上手く調和しないことに気づくでしょう。GTK スタイルと Qt スタイルを調和させたい場合は [[Qt と GTK アプリケーションの外観の統合]] を読んで下さい。
=== KDE 以外の環境で Qt アプリを設定 ===


=== KDE Plasma 以外の環境での Qt 5/6 アプリケーションの設定 ===
Qt4 と違って、Qt5 にはフォントやアイコン、スタイルを設定するための qtconfig ユーティリティが含まれていません。代わりに、Qt5 は DE の設定を使用します。KDE や GNOME では問題なく設定が適用されますが、他のマイナーな DE や WM を使っている場合、Qt5 アプリケーションでアイコンが表示されなくなることがあります。環境変数で {{ic|1=XDG_CURRENT_DESKTOP=KDE}} や {{ic|1=XDG_CURRENT_DESKTOP=GNOME}} と設定して使っているデスクトップ環境を偽装し、適切なアプリケーションを使ってアイコンセットを設定することで解決できます。


Qt 4 と違って、Qt 5 にはフォントやアイコン、スタイルを設定するための qtconfig ユーティリティが含まれていません。代わりに、Qt 5 は、実行中のデスクトップ環境の設定の使用を試みます。KDE Plasma や GNOME では問題なく設定が適用されますが、他のマイナーなデスクトップ環境やウィンドウマネージャを使っている場合、Qt 5 アプリケーションでアイコンが表示されなくなることがあります。環境変数で {{ic|1=XDG_CURRENT_DESKTOP=KDE}} や {{ic|1=XDG_CURRENT_DESKTOP=GNOME}} と設定して使っているデスクトップ環境を偽装し、適切なアプリケーションを使ってアイコンセットを設定することで解決できます。
もしくは、DE に依存しない Qt5 QPA の設定ユーティリティが含まれている {{pkg|qt5ct}} パッケージを使う方法もあります。パッケージをインストールしたら、{{ic|qt5ct}} を実行してアイコンテーマを設定し、{{ic|1=QT_QPA_PLATFORMTHEME="qt5ct"}} 環境変数を設定して下さい。それで Qt アプリケーションに設定が反映されます。もしくは Qt5 アプリケーションの引数として {{ic|--platformtheme qt5ct}} を指定してください。


もしくは、デスクトップ環境に依存しない Qt 5 [https://wiki.qt.io/Qt_Platform_Abstraction QPA] の設定ユーティリティが含まれている {{pkg|qt5ct}}/{{pkg|qt6ct}} パッケージを使う方法もあります。パッケージをインストールしたら、{{ic|qt5ct}}/{{ic|qt6ct}} を実行してアイコンテーマを設定し、{{ic|1=QT_QPA_PLATFORMTHEME=qt5ct:qt6ct}} [[環境変数]]を設定して下さい。それで Qt アプリケーションに設定が反映されます。もしくは Qt 5 アプリケーションの引数として {{ic|--platformtheme qt5ct}} を指定してください。
ユーザーセッションで {{ic|QT_QPA_PLATFORMTHEME}} を自動的に設定するには、以下の行を {{ic|~/.profile}} に追加します:


{{AUR|qt5ct-kde}} は、(KDE QML アプリケーションを含む) KDE アプリケーションとのより良い統合が可能な、パッチ適用済みの ''qt5ct'' を提供します。
[ "$XDG_CURRENT_DESKTOP" = "KDE" ] || [ "$XDG_CURRENT_DESKTOP" = "GNOME" ] || export QT_QPA_PLATFORMTHEME="qt5ct"


以下のエラーが表示され、一部のアプリで一部のアイコンが表示されない場合、{{pkg|oxygen}} と {{pkg|oxygen-icons}} をインストールしてください:
上記の設定でユーザーセッション全体で {{ic|QT_QPA_PLATFORMTHEME}} 環境変数が使われるようになります。{{ic|~/.profile}} ファイルを使用せずに独自のカスタム環境変数で設定を行う [[Enlightenment]] では上記の設定は機能しません。

以下のエラーが表示された場合、あるいはアプリの中のアイコンが表示されない場合、{{pkg|oxygen}} と {{pkg|oxygen-icons}} をインストールしてください:


Icon theme "oxygen" not found.
Icon theme "oxygen" not found.
111行目: 125行目:


=== サポートされているプラットフォーム ===
=== サポートされているプラットフォーム ===

Qt はマイナーなプラットフォームを含めて、今日存在するほとんどのプラットフォームをサポートしており、時々移植が増えることもあります。完全なリストは [[Wikipedia:Qt_(framework)#Platforms|Qt の Wikipedia の記事]]を見て下さい。
Qt は、一部の時代遅れなプラットフォームを含めて、今日存在するほとんどのプラットフォームをサポートしており、時々移植が増えることもあります。完全なリストは [[Wikipedia:Qt_(framework)#Platforms|Qt の Wikipedia の記事]]を見て下さい。


==== Android ====
==== Android ====


{{Note|Qt Creator 4.12 及びそれ以降では、SDK Tools、NDK、必須パッケージを自動的にセットアップできます。詳細は [https://doc.qt.io/qtcreator/creator-developing-android.html#specifying-android-device-settings Qt Creator: Specifying Android Device Settings] を参照してください。}}
最初に [[Android|Android SDK]] と NDK が必要です。SDK の {{AUR|android-sdk}} (一部のツールが削除されています) または {{AUR|android-sdk-25.2.5}} と NDK の {{AUR|android-ndk-10e}} をインストールするか、[[Android Studio]] を使用してください。NDK バージョン [https://developer.android.com/ndk/downloads/older_releases.html#ndk-10c-downloads 10e] をインストールすることが強く推奨されています ([https://wiki.qt.io/Qt_for_Android_known_issues 既知の問題] が存在するため)。

まず、[[AUR]] か [[Android|Android Studio]] を使って、[[Android|Android SDK]] と NDK を入手する必要があります。

SDK は [[OpenJDK]] も必要とします。Qt バージョンごとに異なるバージョン要件が存在します。詳細は[https://doc.qt.io/qt-6/android-getting-started.html このページ]を確認してください。

次に、Android 用の Qt 5 を入手する必要があります。以下で説明されているように [[AUR]] からインストールすることもできますし、自分でビルドすることもできます。Qt [https://wiki.qt.io/Android wiki] ページでビルド手順を見ることができます。

問題が発生した場合は、[https://wiki.qt.io/Qt_for_Android_known_issues 既知の問題]を確認すると良いでしょう。

* {{AUR|android-armv7a-eabi-qt5}} - armeabi-v7a
* {{AUR|android-aarch64-qt5}} - aarch64
* {{AUR|android-x86-qt5}} - x86
* {{AUR|android-x86-64-qt5}} - x86_64


もしくは、[https://download.qt.io/official_releases/qt/ 公式の Qt インストーラ]を使うこともできます。
それから Android 用の Qt 5 を入手してください。以下の [[AUR]] パッケージでインストールできます (ビルド手順は Qt の [http://wiki.qt.io/Android wiki] ページに載っています):
* {{AUR|android-qt5-arm64-v8a}}{{Broken package link|パッケージが存在しません}} - arm64-v8a [https://developer.android.com/ndk/guides/abis.html ABI]
* {{AUR|android-qt5-armeabi}}{{Broken package link|パッケージが存在しません}} - armeabi
* {{AUR|android-qt5-armeabi-v7a}}{{Broken package link|パッケージが存在しません}} - armeabi-v7a
* {{AUR|android-qt5-mips}}{{Broken package link|パッケージが存在しません}} - mips
* {{AUR|android-qt5-x86}}{{Broken package link|パッケージが存在しません}} - x86
* {{AUR|android-qt5-x86_64}}{{Broken package link|パッケージが存在しません}} - x86_64
もしくは [http://download.qt.io/official_releases/qt/5.9/5.9.2/qt-opensource-linux-x64-5.9.2.run Qt Installer] を使って入手することもできます。


=== ツール ===
=== ツール ===
130行目: 151行目:
以下は公式の Qt ツールです:
以下は公式の Qt ツールです:


* {{App|[[Wikipedia:Qt Creator|Qt Creator]]|Qt のために作られたクロスプラットフォームの IDE で全ての機能をサポート。|https://doc.qt.io/qtcreator/|{{Pkg|qtcreator}}}}
* {{App|[[Wikipedia:Qt Creator|Qt Creator]]|Qt のために作られたクロスプラットフォームの IDE で全ての機能をサポート。|https://doc.qt.io/qtcreator/|{{Pkg|qtcreator}}}}
* {{App|Qt Linguist|Qt アプリケーションの翻訳や国際化を素早く行うためのツールのセット。|https://doc.qt.io/qt-5/qtlinguist-index.html|Qt 5: {{Pkg|qt5-tools}}, Qt 4: {{AUR|qt4}}}}
* {{App|Qt Linguist|Qt アプリケーションの翻訳や国際化を素早く行うためのツールのセット。|https://doc.qt.io/qt-5/qtlinguist-index.html|Qt 5: {{Pkg|qt5-tools}}, Qt 4: {{AUR|qt4}}}}
* {{App|Qt Assistant|Qt ''qch'' ファイルの再配布可能で設定可能なドキュメントリーダー。|https://doc.qt.io/qt-5/qtassistant-index.html|Qt 5: {{Pkg|qt5-tools}}, Qt 4: {{AUR|qt4}}}}
* {{App|Qt Assistant|Qt ''qch'' ファイルの再配布可能で設定可能なドキュメントリーダー。|https://doc.qt.io/qt-5/qtassistant-index.html|Qt 5: {{Pkg|qt5-tools}}, Qt 4: {{AUR|qt4}}}}
* {{App|Qt Designer|Qt ウィジェットのためのパワフルなクロスプラットフォームの GUI レイアウトフォームビルダー。|https://doc.qt.io/qt-5/qtdesigner-manual.html|Qt 5: {{Pkg|qt5-tools}}, Qt 4: {{AUR|qt4}}}}
* {{App|Qt Designer|Qt ウィジェットのためのパワフルなクロスプラットフォームの GUI レイアウトフォームビルダー。|https://doc.qt.io/qt-5/qtdesigner-manual.html|Qt 5: {{Pkg|qt5-tools}}, Qt 4: {{AUR|qt4}}}}
* {{App|Qt Quick Designer|QML ファイルのビジュアルエディタ、WYSIWYG をサポート。Qt Quick アプリケーションを素早くデザインしてスクラッチからコンポーネントを作ることができます。|https://doc.qt.io/qtcreator/creator-using-qt-quick-designer.html|{{Pkg|qtcreator}}}}
* {{App|Qt Quick Designer|QML ファイルのビジュアルエディタ、WYSIWYG をサポート。Qt Quick アプリケーションを素早くデザインしてゼロからコンポーネントを作ることができます。|https://doc.qt.io/qtcreator/creator-qtquickdesigner-plugin.html|{{Pkg|qtcreator}}}}
* {{App|qmlscene|QML ドキュメントを読み込むためのツール。QML アプリケーションの開発やデバッグを容易にします。|https://doc.qt.io/qt-5/qtquick-qmlscene.html|Qt 5: {{Pkg|qt5-declarative}}, Qt 4 QML Viewer: {{AUR|qt4}}}}
* {{App|qmlscene|QML ドキュメントを読み込むためのツール。QML アプリケーションの開発やデバッグを容易にします。|https://doc.qt.io/qt-5/qtquick-qmlscene.html|Qt 5: {{Pkg|qt5-declarative}}, Qt 4 QML Viewer: {{AUR|qt4}}}}
* {{App|[[Wikipedia:Qmake|qmake]]|様々なプラットフォームをまたがった開発プロジェクトのビルドプロセスを簡素化するのを助けるツール。[[Wikipedia:ja:CMake|cmake]] に似ていますが、オプションは少なめで Qt アプリケーションのために作られています。|https://doc.qt.io/qt-5/qmake-manual.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{AUR|qt4}}}}
* {{App|[[Wikipedia:Qmake|qmake]]|様々なプラットフォームをまたがった開発プロジェクトのビルドプロセスを簡素化するのを助けるツール。[[Wikipedia:ja:CMake|cmake]] に似ていますが、オプションは少なめで Qt アプリケーションのために作られています。|https://doc.qt.io/qt-5/qmake-manual.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{AUR|qt4}}}}
* {{App|uic|''*.ui'' XML ファイルを読み込み対応する C++ ファイルを生成するツール。|https://doc.qt.io/qt-5/uic.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{AUR|qt4}}}}
* {{App|uic|''*.ui'' XML ファイルを読み込み対応する C++ ファイルを生成するツール。|https://doc.qt.io/qt-5/uic.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{AUR|qt4}}}}
* {{App|rcc|ビルドプロセスの間に Qt アプリケーションにリソース (画像など) を埋め込むために使われるツール。Qt リソース (.qrc) ファイルで指定されたデータを含む C++ ソースファイルを生成します。|https://doc.qt.io/qt-5/rcc.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{AUR|qt4}}}}
* {{App|rcc|ビルドプロセスの間に Qt アプリケーションにリソース (画像など) を埋め込むために使われるツール。Qt リソース (.qrc) ファイルで指定されたデータを含む C++ ソースファイルを生成します。|https://doc.qt.io/qt-5/rcc.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{AUR|qt4}}}}
* {{App|moc|Qt の C++ 拡張を扱うツール (シグナルとスロット、ランタイムタイプダイナミックプロパティなど)。|https://doc.qt.io/qt-5/moc.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{AUR|qt4}}}}
* {{App|moc|Qt の C++ 拡張を扱うツール (シグナルとスロット機構実行時型情報動的プロパティシステムなど)。|https://doc.qt.io/qt-5/moc.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{AUR|qt4}}}}


=== バインディング ===
=== バインディング ===

Qt は人気のある言語全てにバインディングがあります。完全なリストは[[Wikipedia:ja:Qt#バインダ|ここ]]を見て下さい。
Qt には人気な言語のすべてに対してバインディングが存在します。完全なリストは https://wiki.qt.io/Language_Bindings を参照してください。


以下では 'Hello world!' というメッセージを小さなウィンドウで表示するサンプルを示しています。
以下では 'Hello world!' というメッセージを小さなウィンドウで表示するサンプルを示しています。


==== C++ ====
==== C++ ====

* パッケージ:
* パッケージ: {{Pkg|qt5-base}}
** {{AUR|qt4}} - Qt ツールキットのバージョン 4.x。
** {{Pkg|qt5-base}} - Qt ツールキットのバージョン 5.x。
* ウェブサイト: https://www.qt.io/developers/
* ウェブサイト: https://www.qt.io/developers/
* ビルド: {{ic|g++ $(pkg-config --cflags --libs Qt5Widgets) -fPIC -o hello hello.cpp}}
* ビルド:
** Qt4 バージョン: {{ic|g++ $(pkg-config --cflags --libs QtGui) -o hello hello.cpp}}
* 実行コマ: {{ic|./hello}}

** Qt5 バージョン: {{ic|g++ $(pkg-config --cflags --libs Qt5Widgets) -fPIC -o hello hello.cpp}}
* 実行: {{ic|./hello}}
{{hc|hello.cpp|
{{hc|hello.cpp|
#include <QApplication>
#include <QApplication>
170行目: 190行目:


==== QML ====
==== QML ====

* パッケージ: {{AUR|qt4}} または {{Pkg|qt5-declarative}}
* パッケージ: {{Pkg|qt5-declarative}}.
* ウェブサイト: https://doc.qt.io/qt-5/qtquick-qmlscene.html
* ウェブサイト: https://doc.qt.io/qt-5/qtquick-qmlscene.html
* 実行: {{ic|qmlviewer-qt4 hello.qml}} または {{ic|qmlscene-qt5 hello.qml}}
* 実行コマンド: {{ic|qmlscene hello.qml}}

{{hc|hello.qml|
{{hc|hello.qml|
import QtQuick 1.0
import QtQuick 2.3


Rectangle {
Rectangle {
190行目: 212行目:
}
}
}}
}}
{{Note|Qt ツールキットのバージョン 5.x の場合、QtQuick 2.y をインポートする必要があります。}}


==== Python (PyQt) ====
==== Python (PyQt) ====
* パッケージ:
** {{AUR|python-pyqt4}} - Qt 4 の Python 3.x バインディング
** {{AUR|python2-pyqt4}} - Qt 4 の Python 2.x バインディング
** {{Pkg|python-pyqt5}} - Qt 5 の Python 3.x バインディング
** {{Pkg|python2-pyqt5}} - Qt 5 の Python 2.x バインディング
* ウェブサイト: http://www.riverbankcomputing.co.uk/software/pyqt/intro
* 実行: {{ic|python hello-pyqt.py}} または {{ic|python2 hello-pyqt.py}}
{{hc|hello-pyqt.py|<nowiki>
import sys
from PyQt4 import QtGui


* パッケージ: {{Pkg|python-pyqt5}} - Python 3 バインディング
app = QtGui.QApplication(sys.argv)
* ウェブサイト: https://riverbankcomputing.com/software/pyqt/intro
label = QtGui.QLabel("Hello world!")
* 実行コマンド: {{ic|python hello-pyqt.py}}.


label.show()
sys.exit(app.exec_())</nowiki>
}}

Qt 5.x バージョンの場合、多少変わります:
{{hc|hello-pyqt.py|<nowiki>
{{hc|hello-pyqt.py|<nowiki>
import sys
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QLabel


app = QtWidgets.QApplication(sys.argv)
app = QApplication(sys.argv)
label = QtWidgets.QLabel("Hello world!")
label = QLabel("Hello world!")


label.show()
label.show()
sys.exit(app.exec_())</nowiki>
sys.exit(app.exec_())
</nowiki>}}
}}


==== Python (PySide) ====
==== Python (PySide2) ====

* パッケージ:
* パッケージ: {{AUR|pyside2}}
** {{AUR|python-pyside}} - Python 3.x バインディング
* ウェブサイト: https://wiki.qt.io/Qt_for_Python
** {{AUR|python2-pyside}} - Python 2.x バインディング
* ウェブサイト: http://www.pyside.org/
* 実行コマンド: {{ic|python hello-pyside.py}}

* 実行: {{ic|python hello-pyside.py}} または {{ic|python2 hello-pyside.py}}
{{hc|hello-pyside.py|<nowiki>
{{hc|hello-pyside2.py|<nowiki>
import sys
import sys
from PySide.QtCore import *
from PySide2.QtWidgets import QApplication, QLabel

from PySide.QtGui import *
app = QApplication(sys.argv)
app = QApplication(sys.argv)
label = QLabel("Hello world!")
label = QLabel("Hello world!")


label.show()
label.show()
sys.exit(app.exec_())</nowiki>
sys.exit(app.exec_())
</nowiki>}}
}}


==== C# ====
==== C# ====
* パッケージ: {{aur-mirror|kdebindings-qyoto}}
* ウェブサイト: http://techbase.kde.org/Development/Languages/Qyoto
* ビルド: {{ic|mcs -pkg:qyoto hello.cs}}
* 実行: {{ic|mono hello.exe}}
{{hc|hello.cs|
using System;
using Qyoto;


[https://gitlab.com/ddobrev/QtSharp QtSharp] を参照。
public class Hello {
public static int Main(String[] args) {
new QApplication(args);
new QLabel("Hello world!").Show();


== トラブルシューティング ==
return QApplication.Exec();
}
}
}}


=== Qt の journal ログの動作を無効化/変更する ===
==== Ruby ====
* パッケージ: {{aur-mirror|kdebindings-qtruby}}
* ウェブサイト: http://rubyforge.org/projects/korundum/
* 実行: {{ic|ruby hello.rb}}
{{hc|hello.rb|<nowiki>
require 'Qt4'
app = Qt::Application.new(ARGV)
hello = Qt::Label.new('Hello World!')


[[KDE]] などの Qt ベースの[[デスクトップ環境]]を使用すると、[[systemd journal]] に頻繁にデバッグ情報が出力される場合があります。
hello.show

app.exec</nowiki>
{{ic|QT_LOGGING_RULES}} [[環境変数]]を設定することで、この挙動を変更できます。例えば、ログを完全に無効化するには:

{{hc|/etc/environment|2=
QT_LOGGING_RULES='*=false'
}}
}}


デバッグのログのみを無効化したい場合は、 {{ic|1=QT_LOGGING_RULES="*.debug=false"}} を使用してください。
==== Perl ====
* パッケージ: {{Pkg|kdebindings-perlqt}}{{Broken package link|{{aur-mirror|kdebindings-perlqt}}}}
* ウェブサイト: https://code.google.com/p/perlqt4/
* 実行: {{ic|perl hello.pl}}
{{hc|hello.pl|<nowiki>
use QtGui4;


=== アイコンテーマが適用されない ===
my $a = Qt::Application(\@ARGV);
my $hello = Qt::Label("Hello World!", undef);


Qt 5.1 から SVG のサポートは1つのモジュールに移動されました。{{Pkg|qt5-base}} は {{Pkg|qt5-svg}} を依存パッケージとしていないため、{{Pkg|qt5-base}} がインストールされていても {{Pkg|qt5-svg}} がインストールされていない場合があります。この場合、SVG がサポートされないためにアイコンが何もエラーを出さずにスキップされてしまい、アイコンテーマが使われなくなってしまいます。{{Pkg|qt5-svg}} をインストールすることで問題は解決します。
$hello->show;
exit $a->exec;
</nowiki>
}}
==== Lua ====
* パッケージ: {{AUR|libqtlua}}{{Broken package link|{{aur-mirror|libqtlua}}}}
* ウェブサイト: https://www.nongnu.org/libqtlua/
* 実行: {{ic|qtlua hello.lua}}
{{hc|hello.lua|<nowiki>
label = qt.new_widget("QLabel")


=== root アプリケーションにテーマが適用されない ===
label:setText("Hello World!")
label:show()</nowiki>
}}


ユーザーテーマファイル ({{ic|$XDG_CONFIG_HOME/Trolltech.conf}}) は他のアカウントから読み込まれないため、[[root で X アプリケーションを起動]]した場合は設定したテーマが適用されません。以下の方法で解決できます:
{{Note|QtLua は Lua だけを使ってアプリケーションを開発するためには作られていません。Lua をスクリプト言語として使って Qt C++ アプリケーションを拡張するために作成されています。}}


* シンボリックリンクを作成する。例: {{bc|# ln -s /home/[username]/.config/Trolltech.conf /etc/xdg/Trolltech.conf}}
== トラブルシューティング ==
* システム全体に適用されるテーマファイルを作成: {{ic|/etc/xdg/Trolltech.conf}}。
* root でテーマを設定する。


=== Qt 4 スタイルが反映されない ===
=== GNOME Wayland でファイルダイアログを開いたときに Qt プログラムがクラッシュする ===


(KDE ではない) Qt 4 アプリケーションが選択した Qt 4 スタイルを使用しない場合、KDE のスタイル (Oxygen や Phase など) がある場所を Qt 4 に教える必要があります。{{ic|QT_PLUGIN_PATH}} [[環境変数]]を設定する必要があります。例:
GNOME Wayland 環境で、 ファイルダイアログを開こうとすると Smplayer や Calibre などの Qt プログラムがクラッシュすることがあります。デフォルトでは Qt はネイティブの GTK ファイルダイアログを使おうとしますが、X11 の使用が想定された作りとなっており Wayland ではセグメンテーション違反になります。問題を解決する方法は2つ存在します:


QT_PLUGIN_PATH=$HOME/.kde4/lib/kde4/plugins/:/usr/lib/kde4/plugins/
* Qt プログラムでは X11 GDK バックエンドを使うようにする:
$ GDK_BACKEND=x11 some_qt_program
* 修正が含まれている {{AUR|qgnomeplatform-git}} の最新の git スナップショットをインストールする。GNOME (3.20 以上) ではプラットフォームプラグインが自動的に機能します。機能しない場合、手動で[[環境変数]]を設定してください: {{ic|1=QT_QPA_PLATFORMTHEME=qgnomeplatform}}。環境変数を設定すると [[Qt と GTK アプリケーションの外観の統合]]も行われます。


これで {{ic|qtconfig-qt4}} が KDE のスタイルを見つけられるようになり全てが上手く行くはずです。
=== Qt による journal のログ出力を無効化・修正 ===
[[KDE]] などの Qt ベースの[[デスクトップ環境]]を使用すると、systemd の [[systemd#Journal|Journal]] に頻繁にデバッグ用のログが出力される場合があります。


もしくは、Qt 4 の styles ディレクトリから KDE4 の styles ディレクトリにシンボリックリンクを作成します:
{{ic|QT_LOGGING_RULES}} [[環境変数]]を以下のように設定することで挙動を変えられます:

{{hc|/etc/environment|2=
# ln -s /usr/lib/{kde,qt}4/plugins/styles/''theme_name''
// Completely disable any logging

QT_LOGGING_RULES='*=false'
=== Qt 5 のアップデート後に Qt 5 ベースの全アプリケーションが実行できなくなる ===

以下のようなエラーが表示される場合:

Qt FATAL: Cannot mix incompatible Qt library (version 0x50900) with this library (version 0x50901)

最新バージョンの Qt 5 を使ってコンパイルされてない Qt 5 プラットフォームテーマあるいはスタイルプラグインを使っているのがエラーの原因です。特定のバージョンの Qt に依存する Qt のプライベートヘッダーを使っており、soname が一致しません。{{ic|QT_STYLE_OVERRIDE}} と {{ic|QT_QPA_PLATFORMTHEME}} 環境変数をチェックして使用しているテーマ・スタイルを確認し、テーマやスタイルの AUR パッケージを再ビルド・インストールしてください。

=== QXcbConnection: XCB error: 2 (BadValue) ===

以下のような内容でファイルを作成してください [https://bugzilla.redhat.com/show_bug.cgi?id=1497564#c6]:


{{hc|/etc/xdg/QtProject/qtlogging.ini|2=
// Allow debug info to pass
[Rules]
QT_LOGGING_RULES="*.debug=false"
qt.qpa.xcb.xcberror=false
}}
}}


=== アイコンテーマ適用されない ===
=== グラフィック整列されない、スケールがおかしい ===


[[HiDPI#Qt 5]] を参照。
Qt 5.1 から SVG のサポートはモジュールに移動されました。{{Pkg|qt5-base}} は {{Pkg|qt5-svg}} を依存パッケージとしていないため、{{Pkg|qt5-base}} がインストールされていても {{Pkg|qt5-svg}} がインストールされていない場合があります。この場合、SVG がサポートされないためにアイコンが何もエラーを出さずにスキップされてしまい、アイコンテーマが使われなくなってしまいます。{{Pkg|qt5-svg}} をインストールすることで問題は解決します。


=== root で起動したアプリションにテーマ適用されない ===
=== Qt アプリでデッドキーが機能しない ===


適切な[[Xorg でのキーボード設定|キーボード設定]]を行っていて、かつ [[GTK]] アプリ (あるいは他の[[:Category:ウィジェットツールキット|ウィジェット・ツールキット]]) ではデッドキーが機能しているが、[[KDE]] や [[Qt]] アプリでは機能しない場合、[[Xorg]] セッションに適切な構成ファイルが読み込まれていないのかもしれません。
ユーザーテーマファイル ({{ic|$XDG_CONFIG_HOME/Trolltech.conf}}) は他のアカウントから読み込まれないため、[[root で X アプリケーションを起動]]した場合は設定したテーマが適用されません。以下の方法で解決できます:


確かめる方法は以下の通りです:
* シンボリックリンクを作成する。例:
# ln -s /home/[username]/.config/Trolltech.conf /etc/xdg/Trolltech.conf
* システム全体に適用されるテーマファイルを作成: {{ic|/etc/xdg/Trolltech.conf}}。
* root でテーマを設定する。


# {{ic|qt.xkb.compose.debug}} ログルールを有効化した状態で Qt アプリを起動する。例えば、{{Pkg|qtqr}} を起動するには {{ic|1=QT_LOGGING_RULES=qt.xkb.compose.debug=true qtqr}}
=== Qt4 スタイルが反映されない ===
# つぎに、デッドキーを使って文字を入力してみる。例えば、{{ic|ê}} (サーカムフレックス付き小文字のラテン E) を入力するには {{ic|<dead_circumflex> <e>}}。
# {{ic|qt.xkb.compose: failed to create compose table}} という出力が出た場合、この問題を抱えているのでしょう。


これを修正するには、まず[[ロケール]]を特定してください。次に、あなたのロケールが {{ic|/usr/share/X11/locale/}} 内に独自のフォルダ (例: {{ic|fr_FR.UTF-8}}) を持っていない場合、{{ic|compose.dir}} マッピングファイルからそれを探し、対応する構成ファイルを見つけてください (例: {{ic|en_US.UTF-8/Compose}}):
(KDE ではない) Qt4 アプリケーションが選択した Qt4 スタイルを使用しない場合、KDE のスタイル (Oxygen や Phase など) がある場所を Qt4 に教える必要があります。{{ic|/etc/profile}} (root 権限がない場合は {{ic|~/.profile}}) に以下を記述して {{ic|QT_PLUGIN_PATH}} 環境変数を設定してください:


{{hc|head=$ grep fr_FR.UTF-8 /usr/share/X11/locale/compose.dir|output=
export QT_PLUGIN_PATH=$HOME/.kde4/lib/kde4/plugins/:/usr/lib/kde4/plugins/
en_US.UTF-8/Compose fr_FR.UTF-8
en_US.UTF-8/Compose: fr_FR.UTF-8
}}


次に、{{ic|~/.XCompose}} を作成または編集し、この構成ファイルを追加してください:
これで {{ic|qtconfig-qt4}} が KDE のスタイルを見つけられるようになり全てが上手く行くはずです。


{{hc|~/.XCompose|2=
もしくは、Qt4 の styles ディレクトリから KDE4 の styles ディレクトリにシンボリックリンクを作成します:
include "%S/en_US.UTF-8/Compose"
# ln -s /usr/lib/{kde,qt}4/plugins/styles/[theme name]
}}


最後に、[[Qt]] アプリを再起動すれば、デッドキーが機能し、{{ic|1=QT_LOGGING_RULES=qt.xkb.compose.debug=true}} でデバッグしても {{ic|qt.xkb.compose: failed to create compose table}} エラーも出力されないはずです。
=== Qt 5.8 で QML を使用するアプリケーションがクラッシュあるいは動作しない ===


=== ファイル選択ダイアログが非常に遅く、それと関連するアプリケーションがクラッシュする ===
Qt 5.8 から、QML に依存するアプリケーション (例: [[SDDM]] や [[KDE]] のプログラム) が {{ic|/home}} や {{ic|/var}} で実行権限を得られないことが原因でクラッシュしたり、正しく機能しなくなることがあります (別のファイルシステムとして {{ic|noexec}} などでマウントしている場合)。クラッシュの原因は '''qmlcache''' 機能が {{ic|.cache}} ディレクトリにファイルを書き出して実行するためです。[https://bbs.archlinux.org/viewtopic.php?id=222486 フォーラムスレッド] を参照してください。


{{ic|~/.config/QtProject.conf}} ファイルにはゴミデータが溜まっていき、数百メガバイトにまでなります。これを削除してください。[https://bbs.archlinux.org/viewtopic.php?id=283703][https://www.reddit.com/r/archlinux/comments/11k0jaz/file_dialog_in_qt_applications_like_krita_and/]
実行権限を許可できない場合、以下のように[[環境変数]]を設定することで解決できます:
{{bc|1=QML_DISABLE_DISK_CACHE=1}}


=== Wayland で Qt 6.7 がインプットメソッドを無視することがある ===
=== Qt 5 をアップデートした後に Qt 5 ベースのアプリケーションが動かなくなる ===


Qt は Wayland プラットフォーム向けに text-input-v3 を導入しました。しかし、この実装は完璧ではなく、インプットメソッドの使用を妨げてしまう問題を引き起こすことがあります。
以下のようなエラーが表示される場合:


使用している Wayland コンポジタが text-input-v2 プロトコルに対応している場合は、以下の環境変数をグローバルに設定してください:
Qt FATAL: Cannot mix incompatible Qt library (version 0x50900) with this library (version 0x50901)


{{hc|/etc/environment|2=
最新バージョンの Qt 5 を使ってコンパイルされてない Qt 5 プラットフォームテーマあるいはスタイルプラグインを使っているのがエラーの原因です。特定のバージョンの Qt に依存する Qt のプライベートヘッダーを使っており、soname が一致しません。{{ic|QT_STYLE_OVERRIDE}} と {{ic|QT_QPA_PLATFORMTHEME}} 環境変数をチェックして使用しているテーマ・スタイルを確認し、テーマやスタイルの AUR パッケージを再ビルド・インストールしてください。
QT_WAYLAND_TEXT_INPUT_PROTOCOL=zwp_text_input_v2}}


== 参照 ==
== 参照 ==

* [https://www.qt.io/ 公式ウェブサイト]
* [https://doc.qt.io/ Qt ドキュメント]
* [https://qt.io/ 公式ウェブサイト]
* [http://planet.qt.io/ Planet Qt]
* [https://doc.qt.io Qt ドキュメント]
* [https://planet.qt.io Planet Qt]
* [http://qt-apps.org/ Qt アプリケーション]

{{TranslationStatus|Qt|2024-05-05|806924}}

2024年5月8日 (水) 13:23時点における最新版

Qt はクロスプラットフォームのアプリケーション・ウィジェットツールキットです。標準の C++ を使っていますが言語機能を強化するために特別なコードジェネレータ (Meta Object Compiler、またの名を moc) とマクロをフルに活用しています。主な特徴として:

  • 主要なデスクトッププラットフォームと一部のモバイルプラットフォームで動作します。
  • 幅広い国際化サポート。
  • SQL データベースのアクセス、XML のパース、スレッド管理、ネットワークのサポートを提供するライブラリと、ファイルを処理するための統一されたクロスプラットフォームのアプリケーションプログラミングインタフェース (API)。

Qt フレームワークは主要な開発プラットフォームの一つとして、KDE ソフトウェアコミュニティや VLCVirtualBoxMathematica など重要なオープンソース・プロプライエタリなアプリケーションで使われています。

インストール

Qt 6.x および 5.x は公式リポジトリから入手できます。Qt のレガシーバージョン(4.x および 3.x) は AURから入手できます。以下のパッケージでインストールできます:

  • Qt 6.xqt6-base パッケージでインストールできます。ドキュメントは qt6-doc パッケージに入っています。
  • Qt 5.xqt5-base パッケージでインストールできます。ドキュメントは qt5-doc パッケージに入っています。
  • Qt 4.xqt4AUR パッケージでインストールできます。ドキュメントは qt4-docAUR パッケージに入っています。
  • Qt 3.xqt3AUR パッケージでインストールできます。ドキュメントのパッケージはありません。

デフォルトの Qt ツールキット

qtchooserAUR[リンク切れ: package not found] をインストールすることで、/usr/bin 内の Qt のバイナリ (例: qmake) を、それの古いバージョン (例: qmake-qt4qmake-qt3) を指すように変更できます (デフォルトでは Qt 5 のバージョン (例: qmake-qt5) を指しています)。

ノート 現在、qtchooserAUR[リンク切れ: package not found]qt5-base と衝突しています。これを本当に必要としているならば、/usr/local にインストールすることができます。しかし、公式にはもはやサポートされていません。FS#51308 を参照してください。

環境変数を使う

QT_SELECT 環境変数を使用して、デフォルトの Qt ツールキットを定義することができます。例えば、Qt n を使う場合、QT_SELECT=n を設定します。

設定ファイルを使う

この記事またはセクションは情報が古くなっています。
理由: qtchooserAUR[リンク切れ: package not found] はもはや公式にサポートされていません。 (Discuss)

/etc/xdg/qtchooser/ ディレクトリ内の .conf ファイルを指すシンボリックリンク ~/.config/qtchooser/default.conf を作成することで、デフォルトの Qt ツールキットを設定できます。例えば、Qt 4 に設定するには、/etc/xdg/qtchooser/4.conf を指すシンボリックリンク ~/.config/qtchooser/default.conf を作成します:

$ ln -s /etc/xdg/qtchooser/4.conf ~/.config/qtchooser/default.conf

設定

Qt 5 のスタイル

この記事またはセクションは情報が古くなっています。
理由: qt5-base はもはや QGtkStyle を使用しません。 (Discuss)

Qt5 は使われているデスクトップ環境によって使用するスタイルを決定します:

  • KDE Plasma では、実際に選択されている Qt スタイルが使われます。KDE 5 System Settings (systemsettings) を使うことで設定できます。設定項目は Appearance > Application Style > Widget Style にあります。
  • Cinnamon、GNOME、MATE、LXDE、Xfce では GTK が使われます (QGtkStyle)。
  • 他のデスクトップ環境では、Fusion が使われます。

特定のスタイルを強制するには、QT_STYLE_OVERRIDE 環境変数を設定してください。特に、GTK のテーマを使いたい場合は gtk2 に設定してください (注: GTK のスタイルを使うには、以下で説明されている Qt スタイルプラグインのインストールが必要です)。Qt 5 アプリケーションは -style フラグもサポートしており、特定のスタイルを使って Qt 5 アプリケーションを起動することができます。

Qt 5 には次のスタイルが含まれています: FusionWindows。他のスタイルは別途インストールできます:

  • Breeze — Plasma Desktop 用の Breeze ビジュアルスタイルのアートワーク、スタイル、アセット。
https://invent.kde.org/plasma/breeze || breeze
  • Oxygen — KDE Oxygen スタイル。
https://invent.kde.org/plasma/oxygen || oxygen
  • Lightly — Lightly は、視覚的にモダンでミニマルであることを目指す、breeze テーマのフォークです。
https://github.com/Luwx/Lightly || lightly-gitAUR[リンク切れ: package not found]
  • QtCurve — KDE と GTK のウィジェットスタイルの設定セット。
https://invent.kde.org/system/qtcurve || qtcurve-qt5[リンク切れ: package not found]
  • Adwaita-Qt — Qt アプリケーションを GNOME Shell に調和させるスタイル。
https://github.com/MartinBriza/adwaita-qt || adwaita-qt5-gitAUR
  • Qt style pluginsGTKCleanlooksMotifPlastique などの Qt5 の追加スタイルプラグイン。
https://code.qt.io/cgit/qt/qtstyleplugins.git || qt5-stylepluginsAUR
  • KvantumAdaptaArcAmbiance などの人気な GTK テーマと同じ見た目のスタイルが含まれている、マスタマイズ可能な SVG ベースのテーマエンジン。
https://github.com/tsujan/Kvantum/tree/master/Kvantum || kvantum

Qt 4 のスタイル

Qt 4 のアプリケーションは動作しているデスクトップ環境の挙動を模倣しようとします、ただし、なにか問題が発生したり、設定がハードコードされている場合は別です。

  • KDE Plasma では、実際に選択されている Qt スタイルが使われます。KDE システム設定 (systemsettings) を使って設定することができます。設定項目は Appearance > Application Style > Widget Style にあります。
  • Cinnamon、GNOME、Xfce では GTK が使われます (QGtkStyle)。
  • 他のデスクトップ環境では、Windows が使われます。

Qt4 アプリケーションのルックアンドフィールを変更したい場合は、(qt4AUR パッケージに含まれている) Qt 設定 (qtconfig-qt4) ツールが使えます。QtConfig を使うことで Qt 4 アプリケーションの外観をとてもシンプルに設定することができ、現在の Qt のスタイル・色・フォントなど高度なオプションまで簡単にアクセスすることが可能です。

ノート GTK スタイルを使う場合、色やフォントの設定は無視され、GTK 2 から継承されます。

Qt は設定情報を全て /etc/xdg/Trolltech.conf (システム全体) や ~/.config/Trolltech.conf (ユーザー個別) に保存しています。このファイルには外観と関係ない情報が多く含まれているため見づらいですが、変更をファイルの最後に加えれば前の値を上書きできます (変更は [Qt] ヘッダーの下に追加してください)。

例えば、テーマを QtCurve に変更するには、以下を追加します:

~/.config/Trolltech.conf
...
[Qt]
style=QtCurve

Qt 4 には次のスタイルが含まれています: CDECleanlooksGTKMotifPlastiqueWindows。他のスタイルは別途インストールできます:

  • Adwaita-Qt — Qt アプリケーションを GNOME Shell に調和させるスタイル。
https://github.com/MartinBriza/adwaita-qt || adwaita-qt4AUR

Qt スタイルシート

Qt アプリケーションのルックアンドフィールをカスタマイズするのにスタイルシート、シンプルな CSS ファイルを使うこともできます。スタイルシートを使えば、アプリケーションの全てのウィジェットの外観を修正できます。

他のスタイルを使ってアプリケーションを実行するには、次のように実行してください:

$ qt_application -stylesheet style.qss

Qt スタイルシートの詳細は 公式ドキュメント や他のチュートリアル を見て下さい。スタイルシートの例はこの Dolphin の変更を見て下さい。

GTK と Qt

GTK と Qt のアプリケーションを使っているならば、それらの見た目が上手く調和しないことに気づくでしょう。GTK スタイルと Qt スタイルを調和させたい場合は Qt と GTK アプリケーションの外観の統合 を読んで下さい。

KDE Plasma 以外の環境での Qt 5/6 アプリケーションの設定

Qt 4 と違って、Qt 5 にはフォントやアイコン、スタイルを設定するための qtconfig ユーティリティが含まれていません。代わりに、Qt 5 は、実行中のデスクトップ環境の設定の使用を試みます。KDE Plasma や GNOME では問題なく設定が適用されますが、他のマイナーなデスクトップ環境やウィンドウマネージャを使っている場合、Qt 5 アプリケーションでアイコンが表示されなくなることがあります。環境変数で XDG_CURRENT_DESKTOP=KDEXDG_CURRENT_DESKTOP=GNOME と設定して使っているデスクトップ環境を偽装し、適切なアプリケーションを使ってアイコンセットを設定することで解決できます。

もしくは、デスクトップ環境に依存しない Qt 5 QPA の設定ユーティリティが含まれている qt5ct/qt6ct パッケージを使う方法もあります。パッケージをインストールしたら、qt5ct/qt6ct を実行してアイコンテーマを設定し、QT_QPA_PLATFORMTHEME=qt5ct:qt6ct 環境変数を設定して下さい。それで Qt アプリケーションに設定が反映されます。もしくは Qt 5 アプリケーションの引数として --platformtheme qt5ct を指定してください。

qt5ct-kdeAUR は、(KDE QML アプリケーションを含む) KDE アプリケーションとのより良い統合が可能な、パッチ適用済みの qt5ct を提供します。

以下のエラーが表示され、一部のアプリで一部のアイコンが表示されない場合、oxygenoxygen-icons をインストールしてください:

Icon theme "oxygen" not found.
Icon theme "oxygen" not found.
Error: standard icon theme "oxygen" not found!

開発

サポートされているプラットフォーム

Qt は、一部の時代遅れなプラットフォームを含めて、今日存在するほとんどのプラットフォームをサポートしており、時々移植が増えることもあります。完全なリストは Qt の Wikipedia の記事を見て下さい。

Android

ノート Qt Creator 4.12 及びそれ以降では、SDK Tools、NDK、必須パッケージを自動的にセットアップできます。詳細は Qt Creator: Specifying Android Device Settings を参照してください。

まず、AURAndroid Studio を使って、Android SDK と NDK を入手する必要があります。

SDK は OpenJDK も必要とします。Qt バージョンごとに異なるバージョン要件が存在します。詳細はこのページを確認してください。

次に、Android 用の Qt 5 を入手する必要があります。以下で説明されているように AUR からインストールすることもできますし、自分でビルドすることもできます。Qt wiki ページでビルド手順を見ることができます。

問題が発生した場合は、既知の問題を確認すると良いでしょう。

もしくは、公式の Qt インストーラを使うこともできます。

ツール

以下は公式の Qt ツールです:

  • Qt Creator — Qt のために作られたクロスプラットフォームの IDE で、全ての機能をサポート。
https://doc.qt.io/qtcreator/ || qtcreator
  • Qt Linguist — Qt アプリケーションの翻訳や国際化を素早く行うためのツールのセット。
https://doc.qt.io/qt-5/qtlinguist-index.html || Qt 5: qt5-tools, Qt 4: qt4AUR
  • Qt Assistant — Qt qch ファイルの再配布可能で設定可能なドキュメントリーダー。
https://doc.qt.io/qt-5/qtassistant-index.html || Qt 5: qt5-tools, Qt 4: qt4AUR
  • Qt Designer — Qt ウィジェットのためのパワフルなクロスプラットフォームの GUI レイアウトとフォームビルダー。
https://doc.qt.io/qt-5/qtdesigner-manual.html || Qt 5: qt5-tools, Qt 4: qt4AUR
  • Qt Quick Designer — QML ファイルのビジュアルエディタ、WYSIWYG をサポート。Qt Quick アプリケーションを素早くデザインしてゼロからコンポーネントを作ることができます。
https://doc.qt.io/qtcreator/creator-qtquickdesigner-plugin.html || qtcreator
  • qmlscene — QML ドキュメントを読み込むためのツール。QML アプリケーションの開発やデバッグを容易にします。
https://doc.qt.io/qt-5/qtquick-qmlscene.html || Qt 5: qt5-declarative, Qt 4 QML Viewer: qt4AUR
  • qmake — 様々なプラットフォームをまたがった開発プロジェクトのビルドプロセスを簡素化するのを助けるツール。cmake に似ていますが、オプションは少なめで Qt アプリケーションのために作られています。
https://doc.qt.io/qt-5/qmake-manual.html || Qt 5: qt5-base, Qt 4: qt4AUR
  • uic*.ui XML ファイルを読み込み、対応する C++ ファイルを生成するツール。
https://doc.qt.io/qt-5/uic.html || Qt 5: qt5-base, Qt 4: qt4AUR
  • rcc — ビルドプロセスの間に Qt アプリケーションにリソース (画像など) を埋め込むために使われるツール。Qt リソース (.qrc) ファイルで指定されたデータを含む C++ ソースファイルを生成します。
https://doc.qt.io/qt-5/rcc.html || Qt 5: qt5-base, Qt 4: qt4AUR
  • moc — Qt の C++ 拡張を扱うツール (シグナルとスロット機構、実行時型情報、動的プロパティシステムなど)。
https://doc.qt.io/qt-5/moc.html || Qt 5: qt5-base, Qt 4: qt4AUR

バインディング

Qt には人気な言語のすべてに対してバインディングが存在します。完全なリストは https://wiki.qt.io/Language_Bindings を参照してください。

以下では 'Hello world!' というメッセージを小さなウィンドウで表示するサンプルを示しています。

C++

hello.cpp
#include <QApplication>
#include <QLabel>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QLabel hello("Hello world!");

    hello.show();
    return app.exec();
}

QML

hello.qml
import QtQuick 2.3

Rectangle {
    id: page
    width: 400; height: 100
    color: "lightgray"

    Text {
        id: helloText
        text: "Hello world!"
        anchors.horizontalCenter: page.horizontalCenter
        anchors.verticalCenter: page.verticalCenter
        font.pointSize: 24; font.bold: true
    }
}

Python (PyQt)

hello-pyqt.py
import sys
from PyQt5.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
label = QLabel("Hello world!")

label.show()
sys.exit(app.exec_())

Python (PySide2)

hello-pyside2.py
import sys
from PySide2.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
label = QLabel("Hello world!")

label.show()
sys.exit(app.exec_())

C#

QtSharp を参照。

トラブルシューティング

Qt の journal ログの動作を無効化/変更する

KDE などの Qt ベースのデスクトップ環境を使用すると、systemd journal に頻繁にデバッグ情報が出力される場合があります。

QT_LOGGING_RULES 環境変数を設定することで、この挙動を変更できます。例えば、ログを完全に無効化するには:

/etc/environment
QT_LOGGING_RULES='*=false'

デバッグのログのみを無効化したい場合は、 QT_LOGGING_RULES="*.debug=false" を使用してください。

アイコンテーマが適用されない

Qt 5.1 から SVG のサポートは1つのモジュールに移動されました。qt5-baseqt5-svg を依存パッケージとしていないため、qt5-base がインストールされていても qt5-svg がインストールされていない場合があります。この場合、SVG がサポートされないためにアイコンが何もエラーを出さずにスキップされてしまい、アイコンテーマが使われなくなってしまいます。qt5-svg をインストールすることで問題は解決します。

root アプリケーションにテーマが適用されない

ユーザーテーマファイル ($XDG_CONFIG_HOME/Trolltech.conf) は他のアカウントから読み込まれないため、root で X アプリケーションを起動した場合は設定したテーマが適用されません。以下の方法で解決できます:

  • シンボリックリンクを作成する。例:
    # ln -s /home/[username]/.config/Trolltech.conf /etc/xdg/Trolltech.conf
  • システム全体に適用されるテーマファイルを作成: /etc/xdg/Trolltech.conf
  • root でテーマを設定する。

Qt 4 スタイルが反映されない

(KDE ではない) Qt 4 アプリケーションが選択した Qt 4 スタイルを使用しない場合、KDE のスタイル (Oxygen や Phase など) がある場所を Qt 4 に教える必要があります。QT_PLUGIN_PATH 環境変数を設定する必要があります。例:

QT_PLUGIN_PATH=$HOME/.kde4/lib/kde4/plugins/:/usr/lib/kde4/plugins/

これで qtconfig-qt4 が KDE のスタイルを見つけられるようになり全てが上手く行くはずです。

もしくは、Qt 4 の styles ディレクトリから KDE4 の styles ディレクトリにシンボリックリンクを作成します:

# ln -s /usr/lib/{kde,qt}4/plugins/styles/theme_name

Qt 5 のアップデート後に Qt 5 ベースの全アプリケーションが実行できなくなる

以下のようなエラーが表示される場合:

Qt FATAL: Cannot mix incompatible Qt library (version 0x50900) with this library (version 0x50901)

最新バージョンの Qt 5 を使ってコンパイルされてない Qt 5 プラットフォームテーマあるいはスタイルプラグインを使っているのがエラーの原因です。特定のバージョンの Qt に依存する Qt のプライベートヘッダーを使っており、soname が一致しません。QT_STYLE_OVERRIDEQT_QPA_PLATFORMTHEME 環境変数をチェックして使用しているテーマ・スタイルを確認し、テーマやスタイルの AUR パッケージを再ビルド・インストールしてください。

QXcbConnection: XCB error: 2 (BadValue)

以下のような内容でファイルを作成してください [1]:

/etc/xdg/QtProject/qtlogging.ini
[Rules]
qt.qpa.xcb.xcberror=false

グラフィックが整列されない、スケールがおかしい

HiDPI#Qt 5 を参照。

Qt アプリでデッドキーが機能しない

適切なキーボード設定を行っていて、かつ GTK アプリ (あるいは他のウィジェット・ツールキット) ではデッドキーが機能しているが、KDEQt アプリでは機能しない場合、Xorg セッションに適切な構成ファイルが読み込まれていないのかもしれません。

確かめる方法は以下の通りです:

  1. qt.xkb.compose.debug ログルールを有効化した状態で Qt アプリを起動する。例えば、qtqr を起動するには QT_LOGGING_RULES=qt.xkb.compose.debug=true qtqr
  2. つぎに、デッドキーを使って文字を入力してみる。例えば、ê (サーカムフレックス付き小文字のラテン E) を入力するには <dead_circumflex> <e>
  3. qt.xkb.compose: failed to create compose table という出力が出た場合、この問題を抱えているのでしょう。

これを修正するには、まずロケールを特定してください。次に、あなたのロケールが /usr/share/X11/locale/ 内に独自のフォルダ (例: fr_FR.UTF-8) を持っていない場合、compose.dir マッピングファイルからそれを探し、対応する構成ファイルを見つけてください (例: en_US.UTF-8/Compose):

$ grep fr_FR.UTF-8 /usr/share/X11/locale/compose.dir
en_US.UTF-8/Compose             fr_FR.UTF-8
en_US.UTF-8/Compose:            fr_FR.UTF-8

次に、~/.XCompose を作成または編集し、この構成ファイルを追加してください:

~/.XCompose
include "%S/en_US.UTF-8/Compose"

最後に、Qt アプリを再起動すれば、デッドキーが機能し、QT_LOGGING_RULES=qt.xkb.compose.debug=true でデバッグしても qt.xkb.compose: failed to create compose table エラーも出力されないはずです。

ファイル選択ダイアログが非常に遅く、それと関連するアプリケーションがクラッシュする

~/.config/QtProject.conf ファイルにはゴミデータが溜まっていき、数百メガバイトにまでなります。これを削除してください。[2][3]

Wayland で Qt 6.7 がインプットメソッドを無視することがある

Qt は Wayland プラットフォーム向けに text-input-v3 を導入しました。しかし、この実装は完璧ではなく、インプットメソッドの使用を妨げてしまう問題を引き起こすことがあります。

使用している Wayland コンポジタが text-input-v2 プロトコルに対応している場合は、以下の環境変数をグローバルに設定してください:

/etc/environment
QT_WAYLAND_TEXT_INPUT_PROTOCOL=zwp_text_input_v2

参照

翻訳ステータス: このページは en:Qt の翻訳バージョンです。最後の翻訳日は 2024-05-05 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。