Go言語でQtのQGroupBoxを使って、QFormLayoutとQGridLayoutを組み合わせた下記のような図を作ってみる。
QFormLayoutについては下記の記事に記載している。
QGridLayoutについては下記の記事に記載している。
QGroupBoxというのは、各レイアウトをグループ化出来るようになり、
一つのWindow内で複数のレイアウトを配置したい時に利用する。
QGroupBox Class | Qt Widgets 5.11
Group Box Example | Qt Widgets 5.11

package main
import (
"os"
"github.com/therecipe/qt/widgets"
)
func main() {
//go言語でqtを呼び出す
app := widgets.NewQApplication(len(os.Args), os.Args)
//central画面を作成する
window := widgets.NewQMainWindow(nil, 0)
//フレームワークの大きさを決める 第一引数が幅、第二引数が高さの指定
window.SetMinimumSize2(400, 300)
//フレームワークにタイトルをつける
window.SetWindowTitle("Hello Ryoko")
//フォームレイアウトをグループ化
group1 := widgets.NewQGroupBox(nil)
group1.SetTitle("form layout")
formLayout := widgets.NewQFormLayout(nil)
input1 := widgets.NewQLineEdit(nil)
formLayout.AddRow3("string", input1)
//作成したフォームレイアウトをグループにセットしてみる
group1.SetLayout(formLayout)
//グリッドレイアウトをグループ化 NewQGroupBoxでtitleもまとめて作成
group2 := widgets.NewQGroupBox2("grid layout", nil)
//グリッドレイアウトを作成する
gridLayout := widgets.NewQGridLayout2()
label := widgets.NewQLabel2("value", nil, 0)
gridLayout.AddWidget(label, 0, 0, 0)
input2 := widgets.NewQLineEdit(nil)
gridLayout.AddWidget(input2, 0, 1, 0)
//作成したグリットレイアウトをグループにセット
group2.SetLayout(gridLayout)
//新たにQGridLayoutを用意して、今まで作成した各グループを追加してみる
layout := widgets.NewQGridLayout2()
layout.AddWidget(group1, 0, 0, 0)
layout.AddWidget(group2, 1, 0, 0)
//空のウィジェットを作成して、各グループを含めたレイアウトを設置する
widget := widgets.NewQWidget(nil, 0)
widget.SetLayout(layout)
window.SetCentralWidget(widget)
//作成したwindowを表す
window.Show()
//Qtアプリケーションを実行する
app.Exec()
}
Qグループボックスを使うと、タイトル付きのグループボックスフレームができる。




