N900:Python:Qt:レイアウトサンプル のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- N900:Python:Qt:レイアウトサンプル へ行く。
- 1 (2011-05-06 (金) 22:36:13)
- 2 (2011-05-14 (土) 15:12:38)
- 3 (2011-05-14 (土) 22:23:21)
N900:Python:Qt:レイアウトサンプル †
Qtでのレイアウト指定のサンプルです。
絶対値指定のレイアウトサンプル †
絶対値で部品の位置を指定します。まずはソース。
#refpre(LayoutSample1.py,,1)
QLabelオブジェクト生成時に、第二引数にself(QWidgetオブジェクト)を指定します。
また、QLabelオブジェクトのmoveメソッドで位置を指定します。
13: label1 = QtGui.QLabel('Label1',self) 14: label1.move(30,30)
ボタンの場合も同様で、生成時の第二引数にselfを指定し、moveメソッドで位置を指定します。
31: button = QtGui.QPushButton('button1_dayo-', self) 32: button.move(400,40)
すると、こんな感じで表示されます。
Boxレイアウトを使ったレイアウトサンプル †
Boxレイアウトを使ったサンプルです。
#refpre(BoxLayoutSample?.py,,1)
ポイントは
- QVBOXLayout
- 箱の中を垂直方向に分割し、オブジェクトを配置
- QHBOXLayout
- 箱の中を水平方向に分割し、オブジェクトを配置
まあ、たとえばこんな感じで指定します。
17: hbox = QtGui.QHBoxLayout() 18: hbox.addStretch(1) 19: hbox.addWidget(label1) 20: hbox.addWidget(okButton) 21: hbox.addWidget(cancelButton)
軽く解説すると、こんな感じですわ。
- 17行目:QHBoxLayout?オブジェクトを生成します。
- 19行目~21行目:addWidgetメソッドでオブジェクトを追加します。
これらのオブジェクトは水平に配置されます。
また、このサンプルだと2つのHBOXを1つのVBOXに加えてます。
レイアウトオブジェクトにレイアウトオブジェクトを追加する場合はaddLayoutメソッドを使用します。
33: vbox = QtGui.QVBoxLayout() 34: vbox.addStretch(1) 35: vbox.addLayout(hbox) 36: vbox.addLayout(hbox2)
して、こんな感じで表示されます。
Gridを使ったレイアウトサンプル †
Gridレイアウトのアンプルです。まずはソース。
#refpre(GridLayoutSample?.py,,1)
Gridレイアウトの場合も、addWidgetメソッドで追加します。addWidgetメソッドの2,3番目の引数で位置を指定します。
ちなみに、第2引数がY軸、第3引数がX軸です。
27: grid = QtGui.QGridLayout() 28: i = 0 29: for j in labels: 30: button = QtGui.QPushButton(j) 31: grid.addWidget(button, position[i][0],position[i][1]) 32: i = i+1
このサンプルの場合は、事前に宣言しているオブジェクトからループで表示する内容を回してます。
して、こんな感じで表示されます。