日本語 English 한국어

はじめてのPySideとQtQuick/QMLアプリケーション

QMLは、プログラムのユーザーインターフェイスの見た目と動作の両方を記述するために設計された宣言型言語です。QMLでは、プロパティを持つオブジェクトのツリーでユーザーインターフェイスを定義します。このチュートリアルでは、PySideとQMLを使った簡単なHello Worldアプリケーションの作り方を紹介します。

PySide/QMLアプリケーションは、最低2つのファイルから構成されます。一つはユーザーインターフェースのQML定義ファイル、そしてそのqmlファイルを読み込むpythonファイルです。当面、問題を避けるため、両方のファイルを同じフォルダに保存するようにします。

以下は簡単なQMLファイルの例です。 view.qml とします。

  1. import Qt 4.7
  2.  
  3. Rectangle {
  4.     width: 200
  5.     height: 200
  6.     color: "red"
  7.  
  8.     Text {
  9.         text: "Hello World"
  10.         anchors.centerIn: parent
  11.     }
  12. }

まずQt 4.7のインポートから開始します。QtQuickはQt/PySideと異なるビルドスケジュールで進行しているので、近い将来、インポート文を import QtQuick 1.0 に変更しなければならないでしょう。今のところはこのままで動作します。

残りのコードは、HTMLやXMLファイルに慣れている人にとってはかなり易しいでしょう。基本的にはサイズ200 * 200の赤い四角形を作成し、その長方形の中で Hello World を表示するテキスト要素を追加します。コード anchors.centerIn:parent は、テキストをその直近の親の、相対的な中心に表示します。

では、このコードがPySide上でどうなるのか見てみましょう。 main.py とします。

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import sys
  5. from PySide.QtCore import *
  6. from PySide.QtGui import *
  7. from PySide.QtDeclarative import QDeclarativeView
  8.  
  9. # Create Qt application and the QDeclarative view
  10. app = QApplication(sys.argv)
  11. view = QDeclarativeView()
  12. # Create an URL to the QML file
  13. url = QUrl('view.qml')
  14. # Set the QML file and show
  15. view.setSource(url)
  16. view.show()
  17. # Enter Qt main loop
  18. sys.exit(app.exec_())

PySideを理解していて、これまでのチュートリアルを辿ってきた方なら、以上のコードのほとんどはもうご存知でしょう。ここで唯一目新しいのは、QDeclarativeViewをインポートして、QDeclarativeViewオブジェクトのソースにQMLファイルのURLを設定することです。その後、Qtウィジェットと同じように、 QDeclarativeView.show() をコールします 。

ヒント: デスクトップ向けのプログラミングをしているなら、viewの表示の前に、 view.setResizeMode(QDeclarativeView.SizeRootObjectToView) の追加を検討する必要があるでしょう。このコードは、外側のQML長方形のサイズを、外側のウィンドウと一緒に変更するように強制します。

この例をじっくりと調べてみましょう。色やテキストの変更、要素へのプロパティの設定、長方形の色の半径の設定など、基本的なことを試してみてください。要素とそのプロパティは QML Elements (4.7) [qt-project.org]. で確認できます 。( Qt 4.8系はこちらです QML Elements (4.8) [qt-project.org]. )

Categories: