Go言語でQtのQFormLayoutを使ってみるに引き続き、
Go言語で5つのボタンを表示するQGridLayoutを作ってみる。
Qtのレイアウトについては下記の記事に記載してある。
package main
import (
"os"
"github.com/therecipe/qt/widgets"
)
func main() {
app := widgets.NewQApplication(len(os.Args), os.Args)
window := widgets.NewQMainWindow(nil, 0)
window.SetMinimumSize2(400, 300)
window.SetWindowTitle("Hello Ryoko")
gridLayout := widgets.NewQGridLayout2()
//AddWidgetは第一引数にボタンのウィジェット、第二引数に行(col)、
//第三引数に列(row)、第四引数に整列規則(Alignment)を入れる
button1 := widgets.NewQPushButton2("one", nil)
gridLayout.AddWidget(button1, 0, 0, 0)
button2 := widgets.NewQPushButton2("two", nil)
gridLayout.AddWidget(button2, 0, 1, 0)
//AddWidget3は第三引数まではAddWdidgetと同じ、第四引数にどれくらい列をまたぎたいか?
//第五引数に行をまたぎたいか?第六引数に整列規則を入れる
button3 := widgets.NewQPushButton2("three", nil)
gridLayout.AddWidget3(button3, 1, 0, 2, 0, 0)
button4 := widgets.NewQPushButton2("four", nil)
gridLayout.AddWidget(button4, 2, 0, 0)
button5 := widgets.NewQPushButton2("five", nil)
gridLayout.AddWidget(button5, 2, 1, 0)
//widget
widget := widgets.NewQWidget(nil, 0)
widget.SetLayout(gridLayout)
window.SetCentralWidget(widget)
window.Show()
app.Exec()
}
実行すると、下記のような図が表示される。

GridLayoutでは、セルの考え方があって、

セルの数字(上記コードで、引数の列と行に当たる)を考える。
カッコ内の数字はAddWidget関数に当てはめると、(第二引数、第三引数)の関係になる。
この図では、threeのボタンが、2つつながっていて、2つのセルの領域をつなげたい場合は、AddWidget3を使う。
AddWidget3は、引数を6つ持ち、gridLayout.AddWidget3(button3, 1, 0, 2, 0, 0) の第四引数の2で2列をつなげた。




