QtQuickとPyQt5で、最初のアプリを作る

とりあえず、Python & QtQuick についての箇条書き

QtQuickってなに?

  • Qt QuickはQML(JSを拡張したDSL)でコンポーネントを作れる
  • Qt Createrも使える
  • でも言語がシンプルなので、直接編集するのも簡単
  • C++をコンパイルせずUIを開発できる
  • PyQt/PySideも(もちろん)対応している

バージョン問題

  • Qt Quick には ver.1.0 と ver.2.0がある
    • 新型の2.0は、Qt 5.0から使える
  • PySideはQt 5.0に対応していない?
  • PyQtは、PyQt5でQt 5.0とQtQuickに対応

インストール

  • QtQuickは、Qt/PyQt/PySideについてくる
  • PyQt5はまだaptに無いので 公式サイト のソースからコンパイル
    • Qt5 SDKが必要だが、こっちはaptにある
    • PyQt5の前に必要ライブラリのsipをコンパイル&インストールしておこう
    • バグなのか?venvで作ったディレクトリにインストールしようとしたとき、includeファイルのインストール先が正しく認識されなかったので、手動で python configure.py のオプションを指定
    • それ以外はつつがなく完了

使い方

  • Qt/PyQt/PySideがわからは、 QQuickView などのクラスでQMLを読み込める
  • QtQuick側の Qt.quit() を受け取るには QQuickView.engine().quit にレシーバをconnectする
  • オブジェクトを渡すには、 view.rootContext().setContextProperty で登録する
    • QMLからはグローバル変数として見える
    • 文字列や数値だけでなく任意のオブジェクトを渡せる(はず)

Damn ImageViewer by PyQt5 and QtQuick.