「Qt」の版間の差分
Kusakata.bot (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
|||
(2人の利用者による、間の10版が非表示) | |||
2行目: | 2行目: | ||
[[en:Qt]] |
[[en:Qt]] |
||
[[ru:Qt]] |
[[ru:Qt]] |
||
− | [[zh- |
+ | [[zh-hans:Qt]] |
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|KDE}} |
{{Related|KDE}} |
||
21行目: | 21行目: | ||
* '''Qt 3.x''' は {{AUR|qt3}} パッケージでインストールできます。ドキュメントは {{AUR|qt3-doc}} パッケージに入っています。 |
* '''Qt 3.x''' は {{AUR|qt3}} パッケージでインストールできます。ドキュメントは {{AUR|qt3-doc}} パッケージに入っています。 |
||
+ | == デフォルトの Qt ツールキット == |
||
− | {{Warning|Qt のパッケージは {{ic|/usr/bin}} にバイナリ (例: ''qmake'') を提供しません。代わりに {{ic|-qt5}}, {{ic|-qt4}}, {{ic|-qt3}} のシンボリックリンクが提供されます (例: {{ic|qmake-qt5}}, {{ic|qmake-qt4}}, {{ic|qmake-qt3}})。このため Qt3/4 のアプリケーションではコンパイルが失敗するかもしれません。在来のバイナリをインストールするには、[[#デフォルトの Qt ツールキット]]セクションを見て下さい。}} |
||
+ | Qt のパッケージは {{ic|/usr/bin}} にバイナリ (例: ''qmake'') を提供しません。代わりに {{ic|-qt5}}, {{ic|-qt4}}, {{ic|-qt3}} のシンボリックリンクが提供されます (例: {{ic|qmake-qt5}}, {{ic|qmake-qt4}}, {{ic|qmake-qt3}})。このため Qt3/4 のアプリケーションではコンパイルが失敗するかもしれません。 |
||
− | === Qt5 プラットフォームプラグインと依存パッケージ === |
||
− | {{Pkg|qt5-base}} を使うと Qt5 がインストールされます。Qt5 は [http://doc.qt.io/qt-5/qpa.html platform abstractions] を利用しますが、プラットフォームアブストラクションのプラグインの依存パッケージが足りないことがあります。Qt は依存パッケージの依存関係を解決する代わりに、プラグインが使えないという表示をします。例えば、アプリケーションが [http://xcb.freedesktop.org xcb] に依存していて、xcb ライブラリの依存パッケージがインストールされていない場合、Qt は以下のように報告します: |
||
+ | {{AUR|qtchooser}} をインストールすることで {{ic|/usr/bin}} に在来のバイナリ (例: ''qmake'') を復活させて使用する Qt ツールキットを設定できます。デフォルトでは Qt5 が使われます。 |
||
− | This application failed to start because it could not find or load the Qt platform plugin "xcb". Available plugins are: xcb. |
||
− | |||
− | Reinstalling the application may fix this problem. |
||
+ | {{Warning|{{AUR|qtchooser}} は {{Pkg|qt5-base}} と衝突します。本当に必要な場合は {{ic|/usr/local}} にインストールすることができますが、公式にはサポートされていません [https://bugs.archlinux.org/task/51308]。}} |
||
− | Qt5 のページではインストールするべき [http://doc.qt.io/qt-5/linux-requirements.html パッケージのリスト] を公開していますが、何も考えず全てのパッケージをインストールするのは Arch ライクとは言えないでしょう。代わりに、(上記の xcb の場合、libqxcb.so) プラグインを確認して、{{ic|ldd}} を使ってインストールされていない依存パッケージを確認することができます。その依存パッケージをインストールすることで問題は解決するはずです。 |
||
− | |||
− | == デフォルトの Qt ツールキット == |
||
− | {{Pkg|qtchooser}} をインストールすることで {{ic|/usr/bin}} に在来のバイナリ (例: ''qmake'') を復活させて使用する Qt ツールキットを設定できます。デフォルトでは Qt5 が使われます。 |
||
=== 環境変数を使う === |
=== 環境変数を使う === |
||
− | デフォルトの Qt ツールキットを定義するには、{{ic|QT_SELECT}} [[環境変数]]を作成します。例えば、Qt4 に設定するには、シェルの初期化ファイル ({{ic|~/.bash_profile}} や {{ic|~/. |
+ | デフォルトの Qt ツールキットを定義するには、{{ic|QT_SELECT}} [[環境変数]]を作成します。例えば、Qt4 に設定するには、シェルの初期化ファイル ({{ic|~/.bash_profile}} や {{ic|~/.zprofile}} など) で {{ic|1=export QT_SELECT=4}} を実行してください。 |
=== 設定ファイルを使う === |
=== 設定ファイルを使う === |
||
45行目: | 39行目: | ||
=== Qt4 === |
=== Qt4 === |
||
Qt4 のアプリケーションは動作しているデスクトップ環境の挙動を模倣しようとします、ただし、なにか問題が発生したり、設定がハードコードされている場合は別です。 |
Qt4 のアプリケーションは動作しているデスクトップ環境の挙動を模倣しようとします、ただし、なにか問題が発生したり、設定がハードコードされている場合は別です。 |
||
− | * KDE |
+ | * KDE Plasma では、KDE で選択された Qt スタイルが使われます。''KDE システム設定'' (''systemsettings5'') を使って設定することができます。設定項目は ''Appearance > Application Style > Widget Style'' にあります。 |
− | * KDE Plasma 5 では、Plastique が使われます。 |
||
* Cinnamon, GNOME, Xfce では GTK+ が使われます ([[Qt と GTK アプリケーションの外観の統合#QGtkStyle|QGtkStyle]])。 |
* Cinnamon, GNOME, Xfce では GTK+ が使われます ([[Qt と GTK アプリケーションの外観の統合#QGtkStyle|QGtkStyle]])。 |
||
* 他のデスクトップ環境では、Windows が使われます。 |
* 他のデスクトップ環境では、Windows が使われます。 |
||
− | Qt4 アプリケーションのルックアンドフィールを変更したい場合は、''Qt 設定'' ({{ic|qtconfig-qt4}}) ツールが使えます。''QtConfig'' を使うことで Qt4 アプリケーションの外観をとてもシンプルに設定することができ、現在の Qt のスタイル・色・フォントなど高度なオプションまで簡単にアクセスすることが可能です。 |
+ | Qt4 アプリケーションのルックアンドフィールを変更したい場合は、({{Pkg|qt4}} パッケージに含まれている) ''Qt 設定'' ({{ic|qtconfig-qt4}}) ツールが使えます。''QtConfig'' を使うことで Qt4 アプリケーションの外観をとてもシンプルに設定することができ、現在の Qt のスタイル・色・フォントなど高度なオプションまで簡単にアクセスすることが可能です。 |
{{Note|''GTK+'' スタイルを使う場合、色やフォントの設定は無視され、GTK+ 2 から継承されます。}} |
{{Note|''GTK+'' スタイルを使う場合、色やフォントの設定は無視され、GTK+ 2 から継承されます。}} |
||
64行目: | 57行目: | ||
Qt4 には次のスタイルが含まれています: ''CDE'', ''Cleanlooks'', ''GTK+'', ''Motif'', ''Plastique'', ''Windows''。他のスタイルは公式リポジトリや [[AUR]] からインストールできます (ほとんどのスタイルは KDE Plasma デスクトップ用に作られています): |
Qt4 には次のスタイルが含まれています: ''CDE'', ''Cleanlooks'', ''GTK+'', ''Motif'', ''Plastique'', ''Windows''。他のスタイルは公式リポジトリや [[AUR]] からインストールできます (ほとんどのスタイルは KDE Plasma デスクトップ用に作られています): |
||
− | * {{App|Breeze|Plasma Desktop 用の Breeze ビジュアルスタイルのアートワーク、スタイル、アセット。|https:// |
+ | * {{App|Breeze|Plasma Desktop 用の Breeze ビジュアルスタイルのアートワーク、スタイル、アセット。|https://cgit.kde.org/breeze.git|{{Pkg|breeze-kde4}}{{Broken package link|{{aur-mirror|breeze-kde4}}}}}} |
− | * {{App|[[Wikipedia:Oxygen Project|Oxygen]]|KDE Oxygen スタイル。|https:// |
+ | * {{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:// |
+ | * {{App|QtCurve|KDE と GTK のウィジェットスタイルの設定セット。|https://cgit.kde.org/qtcurve.git|{{Pkg|qtcurve-qt4}}}} |
+ | * {{App|Adwaita-Qt|Qt アプリケーションを GNOME Shell に調和させるスタイル。|https://github.com/MartinBriza/adwaita-qt|{{AUR|adwaita-qt4}}}} |
||
− | * {{App|Phase|機能的でありながら単調ではない、美麗でありながら散漫ではないウィジェットスタイル。|http://kde-look.org/content/show.php?content=11402|{{Pkg|kdeartwork-styles}}}} |
||
− | * {{App|Skulpture|KDE と Qt プログラムの GUI スタイルアドオン。ビジュアルエクスペリエンスを向上させる影とグラデーションによるクラシカルで立体的なアートワークが特徴。|http://kde-look.org/content/show.php/?content=59031|{{AUR|skulpture}}{{Broken package link|{{aur-mirror|skulpture}}}}}} |
||
− | * {{App|Bespin|細かくカスタマイズできる KDE テーマ。|http://cloudcity.sourceforge.net/frame.php|{{AUR|bespin-svn}}{{Broken package link|{{aur-mirror|bespin-svn}}}}}} |
||
=== Qt5 === |
=== Qt5 === |
||
Qt5 は使われているデスクトップ環境によって使用するスタイルを決定します: |
Qt5 は使われているデスクトップ環境によって使用するスタイルを決定します: |
||
− | * KDE Plasma |
+ | * KDE Plasma では、KDE Plasma で選択されている Qt テーマが使われます。''KDE 5 System Settings'' (''systemsettings5'') を使うことで設定できます。設定項目は ''Appearance > Application Style > Widget Style'' にあります。 |
− | * KDE 4 では Oxygen (利用可能な場合) または Fusion が使われます。 |
||
* Cinnamon, GNOME, MATE, LXDE, Xfce では GTK+ が使われます ([[Qt と GTK アプリケーションの外観の統合#QGtkStyle|QGtkStyle]])。 |
* Cinnamon, GNOME, MATE, LXDE, Xfce では GTK+ が使われます ([[Qt と GTK アプリケーションの外観の統合#QGtkStyle|QGtkStyle]])。 |
||
* 他のデスクトップ環境では、Fusion が使われます。 |
* 他のデスクトップ環境では、Fusion が使われます。 |
||
− | 特定のスタイルを使いたい場合、{{ic|QT_STYLE_OVERRIDE}} 環境変数を設定します。特に、 |
+ | 特定のスタイルを使いたい場合、{{ic|QT_STYLE_OVERRIDE}} 環境変数を設定します。特に、[[GTK+]] のテーマを使いたい場合は {{ic|gtk2}} に設定してください (GTK+ のスタイルを使うには Qt スタイルプラグインのインストールが必要です)。Qt5 アプリケーションは {{ic|-style}} フラグもサポートしており、特定のスタイルを使って Qt5 アプリケーションを起動することができます。 |
− | Qt5 には次のスタイルが含まれています: ''GTK+'', ''Fusion'', ''Windows''。他のスタイルは |
+ | Qt5 には次のスタイルが含まれています: ''GTK+'', ''Fusion'', ''Windows''。他のスタイルはパッケージからインストールできます: |
− | * {{App|Breeze|Plasma Desktop 用の Breeze ビジュアルスタイルのアートワーク、スタイル、アセット。|https:// |
+ | * {{App|Breeze|Plasma Desktop 用の Breeze ビジュアルスタイルのアートワーク、スタイル、アセット。|https://cgit.kde.org/breeze.git|{{Pkg|breeze}}}} |
− | * {{App|Oxygen|KDE Oxygen スタイル。|https:// |
+ | * {{App|Oxygen|KDE Oxygen スタイル。|https://cgit.kde.org/oxygen.git|{{Pkg|oxygen}}}} |
− | * {{App|QtCurve|KDE と GTK のウィジェットスタイルの設定セット。|https:// |
+ | * {{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 スタイルシート === |
||
91行目: | 85行目: | ||
$ qt_application -stylesheet ''style.qss'' |
$ qt_application -stylesheet ''style.qss'' |
||
− | Qt スタイルシートの詳細は [ |
+ | 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=125979 Dolphin modification] を見て下さい。 |
=== GTK+ と Qt === |
=== GTK+ と Qt === |
||
GTK+ と Qt のアプリケーションを使っているならば、それらの見た目が上手く調和しないことに気づくでしょう。GTK+ スタイルと Qt スタイルを調和させたい場合は [[Qt と GTK アプリケーションの外観の統合]]を読んで下さい。 |
GTK+ と Qt のアプリケーションを使っているならば、それらの見た目が上手く調和しないことに気づくでしょう。GTK+ スタイルと Qt スタイルを調和させたい場合は [[Qt と GTK アプリケーションの外観の統合]]を読んで下さい。 |
||
+ | |||
+ | === KDE 以外の環境で Qt アプリを設定 === |
||
+ | |||
+ | Qt4 と違って、Qt5 にはフォントやアイコン、スタイルを設定するための qtconfig ユーティリティが含まれていません。代わりに、Qt5 は DE の設定を使用します。KDE や GNOME では問題なく設定が適用されますが、他のマイナーな DE や WM を使っている場合、Qt5 アプリケーションでアイコンが表示されなくなることがあります。環境変数で {{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}} を指定してください。 |
||
+ | |||
+ | ユーザーセッションで {{ic|QT_QPA_PLATFORMTHEME}} を自動的に設定するには、以下の行を {{ic|~/.profile}} に追加します: |
||
+ | |||
+ | [ "$XDG_CURRENT_DESKTOP" = "KDE" ] || [ "$XDG_CURRENT_DESKTOP" = "GNOME" ] || export QT_QPA_PLATFORMTHEME="qt5ct" |
||
+ | |||
+ | 上記の設定でユーザーセッション全体で {{ic|QT_QPA_PLATFORMTHEME}} 環境変数が使われるようになります。{{ic|~/.profile}} ファイルを使用せずに独自のカスタム環境変数で設定を行う [[Enlightenment]] では上記の設定は機能しません。 |
||
+ | |||
+ | 以下のエラーが表示された場合、あるいはアプリの中のアイコンが表示されない場合、{{pkg|oxygen}} と {{pkg|oxygen-icons}} をインストールしてください: |
||
+ | |||
+ | Icon theme "oxygen" not found. |
||
+ | Icon theme "oxygen" not found. |
||
+ | Error: standard icon theme "oxygen" not found! |
||
== 開発 == |
== 開発 == |
||
100行目: | 112行目: | ||
=== サポートされているプラットフォーム === |
=== サポートされているプラットフォーム === |
||
Qt はマイナーなプラットフォームを含めて、今日存在するほとんどのプラットフォームをサポートしており、時々移植が増えることもあります。完全なリストは [[Wikipedia:Qt_(framework)#Platforms|Qt の Wikipedia の記事]]を見て下さい。 |
Qt はマイナーなプラットフォームを含めて、今日存在するほとんどのプラットフォームをサポートしており、時々移植が増えることもあります。完全なリストは [[Wikipedia:Qt_(framework)#Platforms|Qt の Wikipedia の記事]]を見て下さい。 |
||
+ | |||
+ | ==== Android ==== |
||
+ | |||
+ | 最初に [[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 既知の問題] が存在するため)。 |
||
+ | |||
+ | それから Android 用の Qt 5 を入手してください。以下の [[AUR]] パッケージでインストールできます (ビルド手順は Qt の [http://wiki.qt.io/Android wiki] ページに載っています): |
||
+ | * {{AUR|android-qt5-arm64-v8a}} - arm64-v8a [https://developer.android.com/ndk/guides/abis.html ABI] |
||
+ | * {{AUR|android-qt5-armeabi}} - armeabi |
||
+ | * {{AUR|android-qt5-armeabi-v7a}} - armeabi-v7a |
||
+ | * {{AUR|android-qt5-mips}} - mips |
||
+ | * {{AUR|android-qt5-x86}} - x86 |
||
+ | * {{AUR|android-qt5-x86_64}} - x86_64 |
||
+ | もしくは [http://download.qt.io/official_releases/qt/5.9/5.9.2/qt-opensource-linux-x64-5.9.2.run Qt Installer] を使って入手することもできます。 |
||
=== ツール === |
=== ツール === |
||
105行目: | 130行目: | ||
以下は公式の Qt ツールです: |
以下は公式の Qt ツールです: |
||
− | * {{App|[[Wikipedia:Qt Creator|Qt Creator]]|Qt のために作られたクロスプラットフォームの IDE で全ての機能をサポート。| |
+ | * {{App|[[Wikipedia:Qt Creator|Qt Creator]]|Qt のために作られたクロスプラットフォームの IDE で全ての機能をサポート。|https://doc.qt.io/qtcreator/|{{Pkg|qtcreator}}}} |
− | * {{App|Qt Linguist|Qt アプリケーションの翻訳や国際化を素早く行うためのツールのセット。| |
+ | * {{App|Qt Linguist|Qt アプリケーションの翻訳や国際化を素早く行うためのツールのセット。|https://doc.qt.io/qt-5/qtlinguist-index.html|Qt 5: {{Pkg|qt5-tools}}, Qt 4: {{Pkg|qt4}}}} |
− | * {{App|Qt Assistant|Qt ''qch'' ファイルの再配布可能で設定可能なドキュメントリーダー。| |
+ | * {{App|Qt Assistant|Qt ''qch'' ファイルの再配布可能で設定可能なドキュメントリーダー。|https://doc.qt.io/qt-5/qtassistant-index.html|Qt 5: {{Pkg|qt5-tools}}, Qt 4: {{Pkg|qt4}}}} |
− | * {{App|Qt Designer|Qt ウィジェットのためのパワフルなクロスプラットフォームの GUI レイアウト・フォームビルダー。| |
+ | * {{App|Qt Designer|Qt ウィジェットのためのパワフルなクロスプラットフォームの GUI レイアウト・フォームビルダー。|https://doc.qt.io/qt-5/qtdesigner-manual.html|Qt 5: {{Pkg|qt5-tools}}, Qt 4: {{Pkg|qt4}}}} |
− | * {{App|Qt Quick Designer|QML ファイルのビジュアルエディタ、WYSIWYG をサポート。Qt Quick アプリケーションを素早くデザインしてスクラッチからコンポーネントを作ることができます。| |
+ | * {{App|Qt Quick Designer|QML ファイルのビジュアルエディタ、WYSIWYG をサポート。Qt Quick アプリケーションを素早くデザインしてスクラッチからコンポーネントを作ることができます。|https://doc.qt.io/qtcreator/creator-using-qt-quick-designer.html|{{Pkg|qtcreator}}}} |
− | * {{App| |
+ | * {{App|qmlscene|QML ドキュメントを読み込むためのツール。QML アプリケーションの開発やデバッグを容易にします。|https://doc.qt.io/qt-5/qtquick-qmlscene.html|Qt 5: {{Pkg|qt5-declarative}}, Qt 4 QML Viewer: {{Pkg|qt4}}}} |
− | * {{App|[[Wikipedia:Qmake|qmake]]|様々なプラットフォームをまたがった開発プロジェクトのビルドプロセスを簡素化するのを助けるツール。[[Wikipedia:ja:CMake|cmake]] に似ていますが、オプションは少なめで Qt アプリケーションのために作られています。|https://qt |
+ | * {{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: {{Pkg|qt4}}}} |
− | * {{App|uic|''*.ui'' XML ファイルを読み込み対応する C++ ファイルを生成するツール。| |
+ | * {{App|uic|''*.ui'' XML ファイルを読み込み対応する C++ ファイルを生成するツール。|https://doc.qt.io/qt-5/uic.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{Pkg|qt4}}}} |
− | * {{App|rcc|ビルドプロセスの間に Qt アプリケーションにリソース (画像など) を埋め込むために使われるツール。Qt リソース (.qrc) ファイルで指定されたデータを含む C++ ソースファイルを生成します。| |
+ | * {{App|rcc|ビルドプロセスの間に Qt アプリケーションにリソース (画像など) を埋め込むために使われるツール。Qt リソース (.qrc) ファイルで指定されたデータを含む C++ ソースファイルを生成します。|https://doc.qt.io/qt-5/rcc.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{Pkg|qt4}}}} |
− | * {{App|moc|Qt の C++ 拡張を扱うツール (シグナルとスロット、ランタイムタイプ、ダイナミックプロパティなど)。| |
+ | * {{App|moc|Qt の C++ 拡張を扱うツール (シグナルとスロット、ランタイムタイプ、ダイナミックプロパティなど)。|https://doc.qt.io/qt-5/moc.html|Qt 5: {{Pkg|qt5-base}}, Qt 4: {{Pkg|qt4}}}} |
=== バインディング === |
=== バインディング === |
||
128行目: | 153行目: | ||
* ビルド: |
* ビルド: |
||
** Qt4 バージョン: {{ic|g++ $(pkg-config --cflags --libs QtGui) -o hello hello.cpp}} |
** Qt4 バージョン: {{ic|g++ $(pkg-config --cflags --libs QtGui) -o hello hello.cpp}} |
||
− | ** Qt5 バージョン: {{ic|g++ $(pkg-config --cflags --libs Qt5Widgets) -o hello hello.cpp}} |
+ | ** Qt5 バージョン: {{ic|g++ $(pkg-config --cflags --libs Qt5Widgets) -fPIC -o hello hello.cpp}} |
* 実行: {{ic|./hello}} |
* 実行: {{ic|./hello}} |
||
{{hc|hello.cpp| |
{{hc|hello.cpp| |
||
169行目: | 194行目: | ||
==== 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|python-pyqt5}} - Qt 5 の Python 3.x バインディング |
||
** {{Pkg|python2-pyqt5}} - Qt 5 の Python 2.x バインディング |
** {{Pkg|python2-pyqt5}} - Qt 5 の Python 2.x バインディング |
||
200行目: | 225行目: | ||
==== Python (PySide) ==== |
==== Python (PySide) ==== |
||
* パッケージ: |
* パッケージ: |
||
− | ** {{ |
+ | ** {{AUR|python-pyside}} - Python 3.x バインディング |
− | ** {{ |
+ | ** {{AUR|python2-pyside}} - Python 2.x バインディング |
* ウェブサイト: http://www.pyside.org/ |
* ウェブサイト: http://www.pyside.org/ |
||
* 実行: {{ic|python hello-pyside.py}} または {{ic|python2 hello-pyside.py}} |
* 実行: {{ic|python hello-pyside.py}} または {{ic|python2 hello-pyside.py}} |
||
247行目: | 272行目: | ||
hello.show |
hello.show |
||
app.exec</nowiki> |
app.exec</nowiki> |
||
− | }} |
||
− | ==== Java ==== |
||
− | * パッケージ: {{AUR|qtjambi}} |
||
− | * ウェブサイト: http://qt-jambi.org/ |
||
− | * ビルド: {{ic|javac Hello.java -cp /opt/qtjambi-beta/qtjambi-linux64-community-4.7.0/qtjambi-4.7.0.jar}} |
||
− | * 実行: {{ic|java -cp /opt/qtjambi-beta/qtjambi-linux64-community-4.7.0/qtjambi-4.7.0.jar:. Hello}} |
||
− | {{hc|Hello.java|<nowiki> |
||
− | import com.trolltech.qt.gui.*; |
||
− | |||
− | public class Hello |
||
− | { |
||
− | public static void main(String args[]) |
||
− | { |
||
− | QApplication.initialize(args); |
||
− | QLabel hello = new QLabel("Hello World!"); |
||
− | |||
− | hello.show(); |
||
− | QApplication.exec(); |
||
− | } |
||
− | }</nowiki> |
||
}} |
}} |
||
==== Perl ==== |
==== Perl ==== |
||
− | * パッケージ: {{Pkg|kdebindings-perlqt}} |
+ | * パッケージ: {{Pkg|kdebindings-perlqt}}{{Broken package link|{{aur-mirror|kdebindings-perlqt}}}} |
− | * ウェブサイト: |
+ | * ウェブサイト: https://code.google.com/p/perlqt4/ |
* 実行: {{ic|perl hello.pl}} |
* 実行: {{ic|perl hello.pl}} |
||
{{hc|hello.pl|<nowiki> |
{{hc|hello.pl|<nowiki> |
||
284行目: | 289行目: | ||
}} |
}} |
||
==== Lua ==== |
==== Lua ==== |
||
− | * パッケージ: {{AUR|libqtlua}} |
+ | * パッケージ: {{AUR|libqtlua}}{{Broken package link|{{aur-mirror|libqtlua}}}} |
− | * ウェブサイト: |
+ | * ウェブサイト: https://www.nongnu.org/libqtlua/ |
* 実行: {{ic|qtlua hello.lua}} |
* 実行: {{ic|qtlua hello.lua}} |
||
{{hc|hello.lua|<nowiki> |
{{hc|hello.lua|<nowiki> |
||
297行目: | 302行目: | ||
== トラブルシューティング == |
== トラブルシューティング == |
||
+ | |||
+ | === GNOME Wayland でファイルダイアログを開いたときに Qt プログラムがクラッシュする === |
||
+ | |||
+ | GNOME Wayland 環境で、 ファイルダイアログを開こうとすると Smplayer や Calibre などの Qt プログラムがクラッシュすることがあります。デフォルトでは Qt はネイティブの GTK ファイルダイアログを使おうとしますが、X11 の使用が想定された作りとなっており Wayland ではセグメンテーション違反になります。問題を解決する方法は2つ存在します: |
||
+ | |||
+ | * Qt プログラムでは X11 GDK バックエンドを使うようにする: |
||
+ | $ GDK_BACKEND=x11 some_qt_program |
||
+ | * 修正が含まれている {{AUR|qgnomeplatform-git}} の最新の git スナップショットをインストールする。GNOME (3.20 以上) ではプラットフォームプラグインが自動的に機能します。機能しない場合、手動で[[環境変数]]を設定してください: {{ic|1=QT_QPA_PLATFORMTHEME=qgnomeplatform}}。環境変数を設定すると [[Qt と GTK アプリケーションの外観の統合]]も行われます。 |
||
+ | |||
+ | === Qt による journal のログ出力を無効化・修正 === |
||
+ | [[KDE]] などの Qt ベースの[[デスクトップ環境]]を使用すると、systemd の [[systemd#Journal|Journal]] に頻繁にデバッグ用のログが出力される場合があります。 |
||
+ | |||
+ | {{ic|QT_LOGGING_RULES}} [[環境変数]]を以下のように設定することで挙動を変えられます: |
||
+ | {{hc|/etc/environment|2= |
||
+ | // Completely disable any logging |
||
+ | QT_LOGGING_RULES='*=false' |
||
+ | |||
+ | // Allow debug info to pass |
||
+ | QT_LOGGING_RULES="*.debug=false" |
||
+ | }} |
||
=== アイコンテーマが適用されない === |
=== アイコンテーマが適用されない === |
||
Qt 5.1 から SVG のサポートはモジュールに移動されました。{{Pkg|qt5-base}} は {{Pkg|qt5-svg}} を依存パッケージとしていないため、{{Pkg|qt5-base}} がインストールされていても {{Pkg|qt5-svg}} がインストールされていない場合があります。この場合、SVG がサポートされないためにアイコンが何もエラーを出さずにスキップされてしまい、アイコンテーマが使われなくなってしまいます。{{Pkg|qt5-svg}} をインストールすることで問題は解決します。 |
Qt 5.1 から SVG のサポートはモジュールに移動されました。{{Pkg|qt5-base}} は {{Pkg|qt5-svg}} を依存パッケージとしていないため、{{Pkg|qt5-base}} がインストールされていても {{Pkg|qt5-svg}} がインストールされていない場合があります。この場合、SVG がサポートされないためにアイコンが何もエラーを出さずにスキップされてしまい、アイコンテーマが使われなくなってしまいます。{{Pkg|qt5-svg}} をインストールすることで問題は解決します。 |
||
+ | |||
+ | === root で起動したアプリケーションにテーマが適用されない === |
||
+ | |||
+ | ユーザーテーマファイル ({{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 でテーマを設定する。 |
||
=== Qt4 スタイルが反映されない === |
=== Qt4 スタイルが反映されない === |
||
312行目: | 346行目: | ||
もしくは、Qt4 の styles ディレクトリから KDE4 の styles ディレクトリにシンボリックリンクを作成します: |
もしくは、Qt4 の styles ディレクトリから KDE4 の styles ディレクトリにシンボリックリンクを作成します: |
||
# ln -s /usr/lib/{kde,qt}4/plugins/styles/[theme name] |
# ln -s /usr/lib/{kde,qt}4/plugins/styles/[theme name] |
||
+ | |||
+ | === 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 フォーラムスレッド] を参照してください。 |
||
+ | |||
+ | 実行権限を許可できない場合、以下のように[[環境変数]]を設定することで解決できます: |
||
+ | {{bc|1=QML_DISABLE_DISK_CACHE=1}} |
||
+ | |||
+ | === 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 パッケージを再ビルド・インストールしてください。 |
||
== 参照 == |
== 参照 == |
||
* [http://qt.io/ 公式ウェブサイト] |
* [http://qt.io/ 公式ウェブサイト] |
||
− | * [ |
+ | * [https://doc.qt.io/ Qt ドキュメント] |
* [http://planet.qt.io/ Planet Qt] |
* [http://planet.qt.io/ Planet Qt] |
||
* [http://qt-apps.org/ Qt アプリケーション] |
* [http://qt-apps.org/ Qt アプリケーション] |
2018年8月30日 (木) 00:47時点における版
Qt はクロスプラットフォームのアプリケーション・ウィジェットツールキットです。標準の C++ を使っていますが言語機能を強化するために特別なコードジェネレータ (Meta Object Compiler もしくは moc) とマクロをフルに活用しています。主な特徴として:
- 主要なデスクトッププラットフォームと複数のモバイルプラットフォームで動作します。
- 完全な国際化サポート。
- SQL データベースのアクセス、XML のパース、スレッド管理、ネットワークのサポートを提供するライブラリと、ファイルを処理するための統一されたクロスプラットフォームのアプリケーションプログラミングインタフェース (API)。
Qt フレームワークは主要な開発プラットフォームの一つとして、KDE ソフトウェアコミュニティや VLC, VirtualBox, Opera, Mathematica, Skype などオープンソース・プロプライエタリ問わず様々なアプリケーションで使われています。
インストール
現在公式リポジトリでは2つのバージョンの Qt が利用可能です。以下のパッケージでインストールできます:
- Qt 5.x は qt5-base パッケージでインストールできます。ドキュメントは qt5-doc パッケージに入っています。
- Qt 4.x は qt4 パッケージでインストールできます。ドキュメントは qt4-docAUR パッケージに入っています。
- Qt 3.x は qt3AUR パッケージでインストールできます。ドキュメントは qt3-docAUR パッケージに入っています。
デフォルトの Qt ツールキット
Qt のパッケージは /usr/bin
にバイナリ (例: qmake) を提供しません。代わりに -qt5
, -qt4
, -qt3
のシンボリックリンクが提供されます (例: qmake-qt5
, qmake-qt4
, qmake-qt3
)。このため Qt3/4 のアプリケーションではコンパイルが失敗するかもしれません。
qtchooserAUR をインストールすることで /usr/bin
に在来のバイナリ (例: qmake) を復活させて使用する Qt ツールキットを設定できます。デフォルトでは Qt5 が使われます。
環境変数を使う
デフォルトの Qt ツールキットを定義するには、QT_SELECT
環境変数を作成します。例えば、Qt4 に設定するには、シェルの初期化ファイル (~/.bash_profile
や ~/.zprofile
など) で export QT_SELECT=4
を実行してください。
設定ファイルを使う
/etc/xdg/qtchooser/
ディレクトリの .conf ファイルに ~/.config/qtchooser/default.conf
からシンボリックリンクを張ればデフォルトの Qt ツールキットを設定できます。例えば、Qt4 に設定するには /etc/xdg/qtchooser/4.conf
から ~/.config/qtchooser/default.conf
にリンクするシンボリックリンクを作成します:
$ ln -s/etc/xdg/qtchooser/4.conf
~/.config/qtchooser/default.conf
外観
Qt4
Qt4 のアプリケーションは動作しているデスクトップ環境の挙動を模倣しようとします、ただし、なにか問題が発生したり、設定がハードコードされている場合は別です。
- KDE Plasma では、KDE で選択された Qt スタイルが使われます。KDE システム設定 (systemsettings5) を使って設定することができます。設定項目は Appearance > Application Style > Widget Style にあります。
- Cinnamon, GNOME, Xfce では GTK+ が使われます (QGtkStyle)。
- 他のデスクトップ環境では、Windows が使われます。
Qt4 アプリケーションのルックアンドフィールを変更したい場合は、(qt4 パッケージに含まれている) Qt 設定 (qtconfig-qt4
) ツールが使えます。QtConfig を使うことで Qt4 アプリケーションの外観をとてもシンプルに設定することができ、現在の Qt のスタイル・色・フォントなど高度なオプションまで簡単にアクセスすることが可能です。
Qt は設定情報を全て /etc/xdg/Trolltech.conf
(システム全体) や ~/.config/Trolltech.conf
(ユーザー個別) に保存しています。このファイルには外観と関係ない情報が多く含まれているため見づらいですが、変更をファイルの最後に加えれば前の値を上書きできます (変更は [Qt]
ヘッダーの下に追加してください)。
例えば、テーマを QtCurve に変更するには、以下を追加します:
~/.config/Trolltech.conf
... [Qt] style=QtCurve
Qt4 には次のスタイルが含まれています: CDE, Cleanlooks, GTK+, Motif, Plastique, Windows。他のスタイルは公式リポジトリや AUR からインストールできます (ほとんどのスタイルは KDE Plasma デスクトップ用に作られています):
- Breeze — Plasma Desktop 用の Breeze ビジュアルスタイルのアートワーク、スタイル、アセット。
- https://cgit.kde.org/breeze.git || breeze-kde4[リンク切れ: アーカイブ: aur-mirror]
- Oxygen — KDE Oxygen スタイル。
- https://cgit.kde.org/oxygen.git || oxygen-kde4[リンク切れ: アーカイブ: aur-mirror]
- QtCurve — KDE と GTK のウィジェットスタイルの設定セット。
- Adwaita-Qt — Qt アプリケーションを GNOME Shell に調和させるスタイル。
Qt5
Qt5 は使われているデスクトップ環境によって使用するスタイルを決定します:
- KDE Plasma では、KDE Plasma で選択されている Qt テーマが使われます。KDE 5 System Settings (systemsettings5) を使うことで設定できます。設定項目は Appearance > Application Style > Widget Style にあります。
- Cinnamon, GNOME, MATE, LXDE, Xfce では GTK+ が使われます (QGtkStyle)。
- 他のデスクトップ環境では、Fusion が使われます。
特定のスタイルを使いたい場合、QT_STYLE_OVERRIDE
環境変数を設定します。特に、GTK+ のテーマを使いたい場合は gtk2
に設定してください (GTK+ のスタイルを使うには Qt スタイルプラグインのインストールが必要です)。Qt5 アプリケーションは -style
フラグもサポートしており、特定のスタイルを使って Qt5 アプリケーションを起動することができます。
Qt5 には次のスタイルが含まれています: GTK+, Fusion, Windows。他のスタイルはパッケージからインストールできます:
- Breeze — Plasma Desktop 用の Breeze ビジュアルスタイルのアートワーク、スタイル、アセット。
- Oxygen — KDE Oxygen スタイル。
- QtCurve — KDE と GTK のウィジェットスタイルの設定セット。
- Adwaita-Qt — Qt アプリケーションを GNOME Shell に調和させるスタイル。
- Qt スタイルプラグイン — GTK+, Cleanlooks, Motif, Plastique などの Qt5 の追加スタイルプラグイン。
Qt4 アプリの設定をする qtconfig-qt4
のように、qt5ct を使うことで Qt5 アプリのルックアンドフィールをカスタマイズすることができます。
Qt スタイルシート
Qt アプリケーションのルックアンドフィールをカスタマイズするのにスタイルシート、シンプルな CSS ファイルを使うこともできます。スタイルシートを使えば、アプリケーションの全てのウィジェットの外観を修正できます。
他のスタイルを使ってアプリケーションを実行するには、次のように実行してください:
$ qt_application -stylesheet style.qss
Qt スタイルシートの詳細は 公式ドキュメント や チュートリアル を見て下さい。スタイルシートの例は Dolphin modification を見て下さい。
GTK+ と Qt
GTK+ と Qt のアプリケーションを使っているならば、それらの見た目が上手く調和しないことに気づくでしょう。GTK+ スタイルと Qt スタイルを調和させたい場合は Qt と GTK アプリケーションの外観の統合を読んで下さい。
KDE 以外の環境で Qt アプリを設定
Qt4 と違って、Qt5 にはフォントやアイコン、スタイルを設定するための qtconfig ユーティリティが含まれていません。代わりに、Qt5 は DE の設定を使用します。KDE や GNOME では問題なく設定が適用されますが、他のマイナーな DE や WM を使っている場合、Qt5 アプリケーションでアイコンが表示されなくなることがあります。環境変数で XDG_CURRENT_DESKTOP=KDE
や XDG_CURRENT_DESKTOP=GNOME
と設定して使っているデスクトップ環境を偽装し、適切なアプリケーションを使ってアイコンセットを設定することで解決できます。
もしくは、DE に依存しない Qt5 QPA の設定ユーティリティが含まれている qt5ct パッケージを使う方法もあります。パッケージをインストールしたら、qt5ct
を実行してアイコンテーマを設定し、QT_QPA_PLATFORMTHEME="qt5ct"
環境変数を設定して下さい。それで Qt アプリケーションに設定が反映されます。もしくは Qt5 アプリケーションの引数として --platformtheme qt5ct
を指定してください。
ユーザーセッションで QT_QPA_PLATFORMTHEME
を自動的に設定するには、以下の行を ~/.profile
に追加します:
[ "$XDG_CURRENT_DESKTOP" = "KDE" ] || [ "$XDG_CURRENT_DESKTOP" = "GNOME" ] || export QT_QPA_PLATFORMTHEME="qt5ct"
上記の設定でユーザーセッション全体で QT_QPA_PLATFORMTHEME
環境変数が使われるようになります。~/.profile
ファイルを使用せずに独自のカスタム環境変数で設定を行う Enlightenment では上記の設定は機能しません。
以下のエラーが表示された場合、あるいはアプリの中のアイコンが表示されない場合、oxygen と oxygen-icons をインストールしてください:
Icon theme "oxygen" not found. Icon theme "oxygen" not found. Error: standard icon theme "oxygen" not found!
開発
サポートされているプラットフォーム
Qt はマイナーなプラットフォームを含めて、今日存在するほとんどのプラットフォームをサポートしており、時々移植が増えることもあります。完全なリストは Qt の Wikipedia の記事を見て下さい。
Android
最初に Android SDK と NDK が必要です。SDK の android-sdkAUR (一部のツールが削除されています) または android-sdk-25.2.5AUR と NDK の android-ndk-10eAUR をインストールするか、Android Studio を使用してください。NDK バージョン 10e をインストールすることが強く推奨されています (既知の問題 が存在するため)。
それから Android 用の Qt 5 を入手してください。以下の AUR パッケージでインストールできます (ビルド手順は Qt の wiki ページに載っています):
- android-qt5-arm64-v8aAUR - arm64-v8a ABI
- android-qt5-armeabiAUR - armeabi
- android-qt5-armeabi-v7aAUR - armeabi-v7a
- android-qt5-mipsAUR - mips
- android-qt5-x86AUR - x86
- android-qt5-x86_64AUR - x86_64
もしくは Qt Installer を使って入手することもできます。
ツール
以下は公式の Qt ツールです:
- Qt Creator — Qt のために作られたクロスプラットフォームの IDE で全ての機能をサポート。
- Qt Linguist — Qt アプリケーションの翻訳や国際化を素早く行うためのツールのセット。
- https://doc.qt.io/qt-5/qtlinguist-index.html || Qt 5: qt5-tools, Qt 4: qt4
- Qt Assistant — Qt qch ファイルの再配布可能で設定可能なドキュメントリーダー。
- https://doc.qt.io/qt-5/qtassistant-index.html || Qt 5: qt5-tools, Qt 4: qt4
- Qt Designer — Qt ウィジェットのためのパワフルなクロスプラットフォームの GUI レイアウト・フォームビルダー。
- https://doc.qt.io/qt-5/qtdesigner-manual.html || Qt 5: qt5-tools, Qt 4: qt4
- Qt Quick Designer — QML ファイルのビジュアルエディタ、WYSIWYG をサポート。Qt Quick アプリケーションを素早くデザインしてスクラッチからコンポーネントを作ることができます。
- qmlscene — QML ドキュメントを読み込むためのツール。QML アプリケーションの開発やデバッグを容易にします。
- https://doc.qt.io/qt-5/qtquick-qmlscene.html || Qt 5: qt5-declarative, Qt 4 QML Viewer: qt4
- qmake — 様々なプラットフォームをまたがった開発プロジェクトのビルドプロセスを簡素化するのを助けるツール。cmake に似ていますが、オプションは少なめで Qt アプリケーションのために作られています。
- https://doc.qt.io/qt-5/qmake-manual.html || Qt 5: qt5-base, Qt 4: qt4
- uic — *.ui XML ファイルを読み込み対応する C++ ファイルを生成するツール。
- https://doc.qt.io/qt-5/uic.html || Qt 5: qt5-base, Qt 4: qt4
- rcc — ビルドプロセスの間に Qt アプリケーションにリソース (画像など) を埋め込むために使われるツール。Qt リソース (.qrc) ファイルで指定されたデータを含む C++ ソースファイルを生成します。
- https://doc.qt.io/qt-5/rcc.html || Qt 5: qt5-base, Qt 4: qt4
- moc — Qt の C++ 拡張を扱うツール (シグナルとスロット、ランタイムタイプ、ダイナミックプロパティなど)。
- https://doc.qt.io/qt-5/moc.html || Qt 5: qt5-base, Qt 4: qt4
バインディング
Qt は人気のある言語全てにバインディングがあります。完全なリストはここを見て下さい。
以下では 'Hello world!' というメッセージを小さなウィンドウで表示するサンプルを示しています。
C++
- パッケージ:
- ウェブサイト: http://qt-project.org/
- ビルド:
- Qt4 バージョン:
g++ $(pkg-config --cflags --libs QtGui) -o hello hello.cpp
- Qt5 バージョン:
g++ $(pkg-config --cflags --libs Qt5Widgets) -fPIC -o hello hello.cpp
- Qt4 バージョン:
- 実行:
./hello
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
- パッケージ: qt4 または qt5-declarative
- ウェブサイト: http://qt-project.org/
- 実行:
qmlviewer-qt4 hello.qml
またはqmlscene-qt5 hello.qml
hello.qml
import QtQuick 1.0 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)
- パッケージ:
- python-pyqt4AUR - Qt 4 の Python 3.x バインディング
- python2-pyqt4AUR - Qt 4 の Python 2.x バインディング
- python-pyqt5 - Qt 5 の Python 3.x バインディング
- python2-pyqt5 - Qt 5 の Python 2.x バインディング
- ウェブサイト: http://www.riverbankcomputing.co.uk/software/pyqt/intro
- 実行:
python hello-pyqt.py
またはpython2 hello-pyqt.py
hello-pyqt.py
import sys from PyQt4 import QtGui app = QtGui.QApplication(sys.argv) label = QtGui.QLabel("Hello world!") label.show() sys.exit(app.exec_())
Qt 5.x バージョンの場合、多少変わります:
hello-pyqt.py
import sys from PyQt5 import QtWidgets app = QtWidgets.QApplication(sys.argv) label = QtWidgets.QLabel("Hello world!") label.show() sys.exit(app.exec_())
Python (PySide)
- パッケージ:
- python-pysideAUR - Python 3.x バインディング
- python2-pysideAUR - Python 2.x バインディング
- ウェブサイト: http://www.pyside.org/
- 実行:
python hello-pyside.py
またはpython2 hello-pyside.py
hello-pyside.py
import sys from PySide.QtCore import * from PySide.QtGui import * app = QApplication(sys.argv) label = QLabel("Hello world!") label.show() sys.exit(app.exec_())
C#
- パッケージ: アーカイブ: aur-mirror
- ウェブサイト: http://techbase.kde.org/Development/Languages/Qyoto
- ビルド:
mcs -pkg:qyoto hello.cs
- 実行:
mono hello.exe
hello.cs
using System; using Qyoto; public class Hello { public static int Main(String[] args) { new QApplication(args); new QLabel("Hello world!").Show(); return QApplication.Exec(); } }
Ruby
- パッケージ: アーカイブ: aur-mirror
- ウェブサイト: http://rubyforge.org/projects/korundum/
- 実行:
ruby hello.rb
hello.rb
require 'Qt4' app = Qt::Application.new(ARGV) hello = Qt::Label.new('Hello World!') hello.show app.exec
Perl
- パッケージ: kdebindings-perlqt[リンク切れ: アーカイブ: aur-mirror]
- ウェブサイト: https://code.google.com/p/perlqt4/
- 実行:
perl hello.pl
hello.pl
use QtGui4; my $a = Qt::Application(\@ARGV); my $hello = Qt::Label("Hello World!", undef); $hello->show; exit $a->exec;
Lua
- パッケージ: libqtluaAUR[リンク切れ: アーカイブ: aur-mirror]
- ウェブサイト: https://www.nongnu.org/libqtlua/
- 実行:
qtlua hello.lua
hello.lua
label = qt.new_widget("QLabel") label:setText("Hello World!") label:show()
トラブルシューティング
GNOME Wayland でファイルダイアログを開いたときに Qt プログラムがクラッシュする
GNOME Wayland 環境で、 ファイルダイアログを開こうとすると Smplayer や Calibre などの Qt プログラムがクラッシュすることがあります。デフォルトでは Qt はネイティブの GTK ファイルダイアログを使おうとしますが、X11 の使用が想定された作りとなっており Wayland ではセグメンテーション違反になります。問題を解決する方法は2つ存在します:
- Qt プログラムでは X11 GDK バックエンドを使うようにする:
$ GDK_BACKEND=x11 some_qt_program
- 修正が含まれている qgnomeplatform-gitAUR の最新の git スナップショットをインストールする。GNOME (3.20 以上) ではプラットフォームプラグインが自動的に機能します。機能しない場合、手動で環境変数を設定してください:
QT_QPA_PLATFORMTHEME=qgnomeplatform
。環境変数を設定すると Qt と GTK アプリケーションの外観の統合も行われます。
Qt による journal のログ出力を無効化・修正
KDE などの Qt ベースのデスクトップ環境を使用すると、systemd の Journal に頻繁にデバッグ用のログが出力される場合があります。
QT_LOGGING_RULES
環境変数を以下のように設定することで挙動を変えられます:
/etc/environment
// Completely disable any logging QT_LOGGING_RULES='*=false' // Allow debug info to pass QT_LOGGING_RULES="*.debug=false"
アイコンテーマが適用されない
Qt 5.1 から SVG のサポートはモジュールに移動されました。qt5-base は qt5-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 でテーマを設定する。
Qt4 スタイルが反映されない
(KDE ではない) Qt4 アプリケーションが選択した Qt4 スタイルを使用しない場合、KDE のスタイル (Oxygen や Phase など) がある場所を Qt4 に教える必要があります。/etc/profile
(root 権限がない場合は ~/.profile
) に以下を記述して QT_PLUGIN_PATH
環境変数を設定してください:
export QT_PLUGIN_PATH=$HOME/.kde4/lib/kde4/plugins/:/usr/lib/kde4/plugins/
これで qtconfig-qt4
が KDE のスタイルを見つけられるようになり全てが上手く行くはずです。
もしくは、Qt4 の styles ディレクトリから KDE4 の styles ディレクトリにシンボリックリンクを作成します:
# ln -s /usr/lib/{kde,qt}4/plugins/styles/[theme name]
Qt 5.8 で QML を使用するアプリケーションがクラッシュあるいは動作しない
Qt 5.8 から、QML に依存するアプリケーション (例: SDDM や KDE のプログラム) が /home
や /var
で実行権限を得られないことが原因でクラッシュしたり、正しく機能しなくなることがあります (別のファイルシステムとして noexec
などでマウントしている場合)。クラッシュの原因は qmlcache 機能が .cache
ディレクトリにファイルを書き出して実行するためです。フォーラムスレッド を参照してください。
実行権限を許可できない場合、以下のように環境変数を設定することで解決できます:
QML_DISABLE_DISK_CACHE=1
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_OVERRIDE
と QT_QPA_PLATFORMTHEME
環境変数をチェックして使用しているテーマ・スタイルを確認し、テーマやスタイルの AUR パッケージを再ビルド・インストールしてください。