Go-Qt5开发之框布局(9)

Go-Qt5开发之框布局

    • 案例说明
    • demo.go

案例说明

我们使用 NewQHBoxLayout 和 NewQVBoxLayout,来分别创建横向布局和纵向布局。
在这个例子中,我们使用 NewQHBoxLayout 和 NewQVBoxLayout 并添加伸展因子,在窗口的右下角显示两个按钮。

demo.go

package main

import (
	"github.com/therecipe/qt/core"
	"github.com/therecipe/qt/gui"
	"github.com/therecipe/qt/widgets"
	"os"
)

/*
我们使用 NewQHBoxLayout 和 NewQVBoxLayout,来分别创建横向布局和纵向布局。

在这个例子中,我们使用 NewQHBoxLayout 和 NewQVBoxLayout 并添加伸展因子,在窗口的右下角显示两个按钮。
*/

func InitUi() *widgets.QMainWindow {
	// 创建窗口
	app := widgets.NewQMainWindow(nil, core.Qt__Widget)

	// 设置窗口的标题
	app.SetWindowTitle("Qt 教程")

	// 设置窗口的位置和大小
	app.SetGeometry2(300, 300, 300, 220)

	// 设置窗口的图标,引用当前目录下的web.png图片
	app.SetWindowIcon(gui.NewQIcon5("images/app.ico"))

	// 布局窗口组件载体
	layoutWidget := widgets.NewQWidget(app, core.Qt__Widget)
	//layoutWidget.SetGeometry(core.NewQRect4(300, 300, 300, 220))
	layoutWidget.SetGeometry2(0, 0, 300, 220)
	app.SetCentralWidget(layoutWidget)

	okButton := widgets.NewQPushButton2("OK", layoutWidget)
	cancelButton := widgets.NewQPushButton2("Cancel", layoutWidget)

	// 水平布局
	// 我们创建一个水平布局和添加一个伸展因子和两个按钮。
	hbox := widgets.NewQHBoxLayout2(layoutWidget)
	hbox.SetContentsMargins(0, 0, 0, 0)
	// 	两个按钮前的伸展增加了一个可伸缩的空间。这将推动他们靠右显示。
	hbox.AddStretch(1)
	// 为布局中添加控件,stretch(拉伸因子)只适用与QBoxLayout,widget和box会随着stretch的变大而增大;alignment指定对齐的方式
	hbox.AddWidget(okButton, 0, 0)
	hbox.AddWidget(cancelButton, 0, 0)
	//hbox.Layout().AddWidget(okButton)
	//hbox.Layout().AddWidget(cancelButton)

	//垂直布局
	// 创建一个垂直布局,并添加伸展因子,让水平布局显示在窗口底部
	vbox := widgets.NewQVBoxLayout2(layoutWidget)
	vbox.SetContentsMargins(0, 0, 0, 0)
	vbox.AddStretch(1)
	vbox.AddLayout(hbox, 0)

	//app.SetLayout(vbox)

	return app
}

func main() {
	// 创建一个应用程序对象
	// sys.argv参数是一个列表,从命令行输入参数
	widgets.NewQApplication(len(os.Args), os.Args)

	// 初始化窗口
	app := InitUi()

	// 显示组件
	app.Show()

	// 确保应用程序干净的退出
	widgets.QApplication_Exec()
}

你可能感兴趣的:(Golang-Qt5)