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:レイアウトサンプル - HiiHahWIKI - making some notes for... -
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

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

Last-modified: 2013-08-24 (土) 02:14:21 (2216d)
Top / N900:Python:Qt:レイアウトサンプル

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

Gridレイアウトのサンプル2

Gridレイアウトで、幅の指定とかできるみたいです。

※N900ではちょっと有効性が不明だったんですが、多分通常のLinux、Windowsでは正常に動作すると思われます。

fileGridlayoutsample2.py

#refpre(Gridlayoutsample2.py,,1);

24行目でスペースを10pt開ける指定をしてます。

24:     grid.setSpacing(10)

また、幅の指定は33行目あたりがポイントです。

32:     grid.addWidget(review,2,0)
33:     grid.addWidget(reviewEdit,2,1,3,1)

addWidgetメソッドの引数に4番目、5番目を足すと、幅が指定できます。

ただ、この例+N900ではあまり有効には見えませんが、、、

画面はこんな感じです。

Screenshot-20110514-221557.png