0 && $edn < $lmax ) ? $edn: $lmax; $fmt = '%0'.strlen($edn).'d: '; for (; $stn<=$edn; $stn++ ) { $tstr = htmlspecialchars(mb_convert_encoding($lines[$stn-1],SOURCE_ENCODING,"auto")); $res .= ( $args[2] ? sprintf($fmt,$stn):'').refpre_replace_tab($tstr); } return '
'.$res.'
'; } ?> N900:Python:Qt:レイアウトサンプル のバックアップ(No.3) - HiiHahWIKI - making some notes for... -
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

N900:Python:Qt:レイアウトサンプル のバックアップ(No.3)


N900:Python:Qt:レイアウトサンプル

Qtでのレイアウト指定のサンプルです。

絶対値指定のレイアウトサンプル

絶対値で部品の位置を指定します。まずはソース。

fileLayoutSample1.py

#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)    

すると、こんな感じで表示されます。

Screenshot-20110506-221622.png

Boxレイアウトを使ったレイアウトサンプル

Boxレイアウトを使ったサンプルです。

fileBoxLayoutSample.py

#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)

して、こんな感じで表示されます。

Screenshot-20110514-151343.png

Gridを使ったレイアウトサンプル

Gridレイアウトのアンプルです。まずはソース。

fileGridLayoutSample.py

#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

このサンプルの場合は、事前に宣言しているオブジェクトからループで表示する内容を回してます。

して、こんな感じで表示されます。

Screenshot-20110514-154827.png