Qt QuickControls2アプリのプロジェクトを作成したが実行するとエラーが出たので直した(module "QtQuick.Controls" version 2.0 is not installed)
ぜんぜん環境構築できてないじゃん……。(2回目)
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 2018-06-27
- Qt 5.7.1
問題
Qt QuickControls2アプリケーションのプロジェクトを作成する。
Qt Creatorで実行したところ、以下のようにエラーが出た。(メニュー→ビルド
→すべてビルド
)
/tmp/work/build-Hello_Pj_App_QuickControls2-unknown-Debug/Hello_Pj_App_QuickControls2 を起動中... QML debugging is enabled. Only use this in a safe environment. libEGL warning: DRI2: failed to authenticate qt5ct: using qt5ct plugin JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform. QQmlApplicationEngine failed to load component qrc:/main.qml:2 module "QtQuick.Controls" version 2.0 is not installed
調べる1
以下をインストールする必要があるらしい。
- qml-module-qtquick-dialogs
- qml-module-qtquick-controls
- qml-module-qtquick-layouts
- qml-module-qtquick-window2
$ sudo apt install -y qml-module-qtquick-dialogs qml-module-qtquick-controls qml-module-qtquick-layouts qml-module-qtquick-window2
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 qml-module-qtquick-controls はすでに最新バージョン (5.7.1~20161021-2) です。 qml-module-qtquick-controls は手動でインストールしたと設定されました。 qml-module-qtquick-layouts はすでに最新バージョン (5.7.1-2+rpi1) です。 qml-module-qtquick-layouts は手動でインストールしたと設定されました。 qml-module-qtquick-window2 はすでに最新バージョン (5.7.1-2+rpi1) です。 qml-module-qtquick-window2 は手動でインストールしたと設定されました。 以下のパッケージが自動でインストールされましたが、もう必要とされていません: libdirectfb-1.2-9 libiso9660-8 libvcdinfo0 libvlccore8 これを削除するには 'sudo apt autoremove' を利用してください。 以下の追加パッケージがインストールされます: qml-module-qtquick-privatewidgets 以下のパッケージが新たにインストールされます: qml-module-qtquick-dialogs qml-module-qtquick-privatewidgets アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。 124 kB のアーカイブを取得する必要があります。 この操作後に追加で 554 kB のディスク容量が消費されます。 取得:1 http://ftp.jaist.ac.jp/raspbian stretch/main armhf qml-module-qtquick-privatewidgets armhf 5.7.1~20161021-2 [36.5 kB] 取得:2 http://ftp.jaist.ac.jp/raspbian stretch/main armhf qml-module-qtquick-dialogs armhf 5.7.1~20161021-2 [87.1 kB] 124 kB を 0秒 で取得しました (369 kB/s) 以前に未選択のパッケージ qml-module-qtquick-privatewidgets:armhf を選択しています。 (データベースを読み込んでいます ... 現在 168407 個のファイルとディレクトリがインストールされています。) .../qml-module-qtquick-privatewidgets_5.7.1~20161021-2_armhf.deb を展開する準備をしています ... qml-module-qtquick-privatewidgets:armhf (5.7.1~20161021-2) を展開しています... 以前に未選択のパッケージ qml-module-qtquick-dialogs:armhf を選択しています。 .../qml-module-qtquick-dialogs_5.7.1~20161021-2_armhf.deb を展開する準備をしています ... qml-module-qtquick-dialogs:armhf (5.7.1~20161021-2) を展開しています... qml-module-qtquick-privatewidgets:armhf (5.7.1~20161021-2) を設定しています ... qml-module-qtquick-dialogs:armhf (5.7.1~20161021-2) を設定しています ...
再び実行するも同様のエラー……。
調べる2
$ sudo apt install -y qml-module-qtquick-controls2
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: libdirectfb-1.2-9 libiso9660-8 libvcdinfo0 libvlccore8 これを削除するには 'sudo apt autoremove' を利用してください。 以下の追加パッケージがインストールされます: libqt5quickcontrols2-5 libqt5quicktemplates2-5 以下のパッケージが新たにインストールされます: libqt5quickcontrols2-5 libqt5quicktemplates2-5 qml-module-qtquick-controls2 アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。 317 kB のアーカイブを取得する必要があります。 この操作後に追加で 2,022 kB のディスク容量が消費されます。 取得:1 http://ftp.jaist.ac.jp/raspbian stretch/main armhf libqt5quicktemplates2-5 armhf 5.7.1-1 [161 kB] 取得:2 http://ftp.jaist.ac.jp/raspbian stretch/main armhf libqt5quickcontrols2-5 armhf 5.7.1-1 [24.3 kB] 取得:3 http://ftp.jaist.ac.jp/raspbian stretch/main armhf qml-module-qtquick-controls2 armhf 5.7.1-1 [132 kB] 317 kB を 0秒 で取得しました (409 kB/s) 以前に未選択のパッケージ libqt5quicktemplates2-5:armhf を選択しています。 (データベースを読み込んでいます ... 現在 168425 個のファイルとディレクトリがインストールされています。) .../libqt5quicktemplates2-5_5.7.1-1_armhf.deb を展開する準備をしています ... libqt5quicktemplates2-5:armhf (5.7.1-1) を展開しています... 以前に未選択のパッケージ libqt5quickcontrols2-5:armhf を選択しています。 .../libqt5quickcontrols2-5_5.7.1-1_armhf.deb を展開する準備をしています ... libqt5quickcontrols2-5:armhf (5.7.1-1) を展開しています... 以前に未選択のパッケージ qml-module-qtquick-controls2:armhf を選択しています。 .../qml-module-qtquick-controls2_5.7.1-1_armhf.deb を展開する準備をしています ... qml-module-qtquick-controls2:armhf (5.7.1-1) を展開しています... libqt5quicktemplates2-5:armhf (5.7.1-1) を設定しています ... libc-bin (2.24-11+deb9u3) のトリガを処理しています ... libqt5quickcontrols2-5:armhf (5.7.1-1) を設定しています ... qml-module-qtquick-controls2:armhf (5.7.1-1) を設定しています ... libc-bin (2.24-11+deb9u3) のトリガを処理しています ...
module "QtQuick.Templates" is not installed
別のエラーになった。あと何をいくつインストールすればいいの……。いつ終わるの……。
/tmp/work/build-Hello_Pj_App_QuickControls2-unknown-Debug/Hello_Pj_App_QuickControls2 を起動中... QML debugging is enabled. Only use this in a safe environment. libEGL warning: DRI2: failed to authenticate qt5ct: using qt5ct plugin JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform. JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform. QQmlApplicationEngine failed to load component qrc:/main.qml:27 Type TabBar unavailable file:///usr/lib/arm-linux-gnueabihf/qt5/qml/QtQuick/Controls.2/TabBar.qml:38 module "QtQuick.Templates" is not installed
調べる3
qt5-declarative
, qt5-quick
, qt5-quickcontrols2
をインストールするものらしい。
sudo apt install -y qt5-declarative qt5-quick qt5-quickcontrols2
騙された。存在しないじゃん……。
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 E: パッケージ qt5-declarative が見つかりません E: パッケージ qt5-quick が見つかりません E: パッケージ qt5-quickcontrols2 が見つかりません
調べる4
一つ前の参考URLでいっぱいインストール候補があった。あれを入れてみるか。
$ sudo apt install -y qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtquick-xmllistmodel qttools5-dev-tools qml-module-qtquick-dialogs qml-module-qt-labs-settings libqt5qml-graphicaleffects qtmultimedia5-dev qml-module-qtmultimedia libzbar-dev
意味不明だがインストールされなかったっぽい。
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 パッケージ libqt5qml-graphicaleffects は使用できませんが、別のパッケージから参照されます。 これは、パッケージが欠落しているか、廃止されたか、または別のソース からのみ利用可能であることを意味します。 しかし、以下のパッケージが置き換えます: qml-module-qtgraphicaleffects E: パッケージ 'libqt5qml-graphicaleffects' にはインストール候補がありません
調べる5
出力ディレクトリに以下のDLLを配置すればいいらしい。
- デバッグ版
- Qt5QuickTemplates2d.dll
- Qt5QuickControls2d.dll
- リリース版
- Qt5QuickTemplates2.dll
- Qt5QuickControls2.dll
拡張子DLLはWindows。Linuxだとたぶんso? 何にせよ、それが存在するのか、あるならどこか、さっぱりわからない。
調べる6
In the end I also needed the window package. Here's the summary of the packages (which only worked on newer ubuntus, bionic for example): python3 python3-pyqt5 python3-pyqt5.qtquick qt5-default qml-module-qtquick-controls2 libqt5qml5 qml-module-qtquick2 qml-module-qtquick-window2
今まででインストールしていないものを抽出する。
$ sudo apt install -y libqt5qml5 qml-module-qtquick2
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 libqt5qml5 はすでに最新バージョン (5.7.1-2+rpi1) です。 libqt5qml5 は手動でインストールしたと設定されました。 qml-module-qtquick2 はすでに最新バージョン (5.7.1-2+rpi1) です。 qml-module-qtquick2 は手動でインストールしたと設定されました。 以下のパッケージが自動でインストールされましたが、もう必要とされていません: libdirectfb-1.2-9 libiso9660-8 libvcdinfo0 libvlccore8 これを削除するには 'sudo apt autoremove' を利用してください。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
あら、既存だったみたい。
調べる7
パッケージを探してみる。
$ apt list | grep quick ... qml-module-qtquick-templates2 ...
qml-module-qtquick-templates2
という未インストールのものがあった。名前的にこれじゃね?
$ sudo apt install -y qml-module-qtquick-templates2
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: libdirectfb-1.2-9 libiso9660-8 libvcdinfo0 libvlccore8 これを削除するには 'sudo apt autoremove' を利用してください。 以下のパッケージが新たにインストールされます: qml-module-qtquick-templates2 アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 36.6 kB のアーカイブを取得する必要があります。 この操作後に追加で 312 kB のディスク容量が消費されます。 取得:1 http://ftp.jaist.ac.jp/raspbian stretch/main armhf qml-module-qtquick-templates2 armhf 5.7.1-1 [36.6 kB] 36.6 kB を 0秒 で取得しました (68.8 kB/s) 以前に未選択のパッケージ qml-module-qtquick-templates2:armhf を選択しています。 (データベースを読み込んでいます ... 現在 168711 個のファイルとディレクトリがインストールされています。) .../qml-module-qtquick-templates2_5.7.1-1_armhf.deb を展開する準備をしています ... qml-module-qtquick-templates2:armhf (5.7.1-1) を展開しています... qml-module-qtquick-templates2:armhf (5.7.1-1) を設定しています ...
再びQt Creatorに戻ってコードを実行すると、できたーーーーーーーーーーーーーー!
所感
やっとQt QuickControls2アプリの実行ができた。これで環境構築は完璧! だと思った? 残念でしたぁぁぁーじつはデザイナが使えませぇぇぇーん。……。もうやだQtクソすぎ。