Go言語でQtのQMainWindowを使ってみるに引き続き、

今回はGo言語でQtのQBoxLayoutを使ってみる。

QBoxLayout Class | Qt Widgets 5.11


Qtのレイアウトについては下記の記事に記載してある。

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

	widget := widgets.NewQWidget(nil, 0)

	//フレームワークにQTBoxLayoutをはめ込む
	//第一引数で0は左から右、1は右から左、2は上から下、3は下から上
	widget.SetLayout(widgets.NewQBoxLayout(3, nil)) 
	window.SetCentralWidget(widget)

	label := widgets.NewQLabel2("ryoko", nil, 0)
	widget.Layout().AddWidget(label)

	label2 := widgets.NewQLabel2("usa", nil, 0)
	widget.Layout().AddWidget(label2)

	label3 := widgets.NewQLabel2("kuma", nil, 0)
	widget.Layout().AddWidget(label3)

	window.Show()

	app.Exec()
}

widgets.NewQMainWindowで箱になるWindow画面を作った。その中で上から何か文字を表示したい場合は、widgets.NewQWidgetを使う。今回は例としてWindow画面の下から上に文字を表記してみるので、widget.SetLayoutで「3」を指定する。

次に表記したい文字を表すのに、widgets.NewQLabel2を使う。ここに下から表記したいものを順番に書いていき実行すると下記の画面が表示される。



QBoxLayoutの第一引数で0〜3を指定して、パーツの並び順を指定するが、

上から下に並べる(2に相当)ことが決まっているのであればQVBoqLayoutを使用する。

上から順番に表記したい文字を入力してみる。

QVBoxLayout Class | Qt Widgets 5.11


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

	widget := widgets.NewQWidget(nil, 0)
	widget.SetLayout(widgets.NewQVBoxLayout())
	window.SetCentralWidget(widget)

	label := widgets.NewQLabel2("ryoko", nil, 0)
	widget.Layout().AddWidget(label)

	label2 := widgets.NewQLabel2("usa", nil, 0)
	widget.Layout().AddWidget(label2)

	label3 := widgets.NewQLabel2("kuma", nil, 0)
	widget.Layout().AddWidget(label3)

	window.Show()

	app.Exec()
}


widgets.AddWidget()で指定した順に上から出力される。