GO QT5 水平垂直布局

    科技2024-05-15  76

    GO QT5 水平垂直布局

    完整代码

    /*------------------------------------------------------------------- | Project : Go QT5 学习 | Author : 今夕何夕 | QQ/Email : 184566608<qingyueheji@qq.com> | Time : 2020-10-07 15:59 | Describe : 水平垂直布局 +------------------------------------------------------------------*/ package main import ( "github.com/therecipe/qt/core" "github.com/therecipe/qt/gui" "github.com/therecipe/qt/widgets" "os" ) func InitUI() *widgets.QMainWindow { // NewQMainWindow 没有布局功能,这只是一个窗口 app := widgets.NewQMainWindow(nil, 0) app.SetGeometry2(0, 0, 500, 400) // 注册一个控件挂 QMainWindow(app) 上 管理全局 centralWidget := widgets.NewQWidget(app, core.Qt__Widget) // 注册一个布局控件并设置 centralWidget 的布局(水平布局) verticalLayout := widgets.NewQVBoxLayout2(centralWidget) // 控件的间距 verticalLayout.SetSpacing(0) verticalLayout.SetContentsMargins(0, 0, 0, 0) // 注册一个 QWidget 控件 并挂载到 centralWidget topLayoutWidget := widgets.NewQWidget(centralWidget, core.Qt__Widget) topLayoutWidget.SetStyleSheet("background-color:red") //topLayoutWidget.SetGeometry2(0, 0, 300, 220) // 设置控件位置及大小 /注释了的等于没注释的/// topLayoutWidget.SetSizePolicy2(widgets.QSizePolicy__Preferred, widgets.QSizePolicy__Expanding) 设置控件填充 //sizePolicy := widgets.NewQSizePolicy2(widgets.QSizePolicy__Preferred, widgets.QSizePolicy__Expanding, widgets.QSizePolicy__DefaultType) 设置水平 //sizePolicy.SetHorizontalPolicy(0) 设置垂直 //sizePolicy.SetVerticalStretch(0) 设置高 //sizePolicy.SetHeightForWidth(topLayoutWidget.SizePolicy().HasHeightForWidth()) 给控件设置填充 //topLayoutWidget.SetSizePolicy(sizePolicy) // 设置 verticalLayout 的子控件 并受父控件布局影响 verticalLayout.AddWidget(topLayoutWidget, 0, 0) // 注册一个 QWidget 控件 并挂载到 centralWidget bottomLayoutwidget := widgets.NewQWidget(centralWidget, core.Qt__Widget) bottomLayoutwidget.SetStyleSheet("background-color:blue") // 设置 verticalLayout 的子控件 并受父控件布局影响 verticalLayout.AddWidget(bottomLayoutwidget, 0, 0) // 注册一个布局控件并设置 topLayoutWidget 的布局(垂直布局) hbox := widgets.NewQHBoxLayout2(bottomLayoutwidget) // 注册一个伸缩因子 spacerItem := widgets.NewQSpacerItem(40, 20, widgets.QSizePolicy__Expanding, widgets.QSizePolicy__Minimum) // 在 ok 之前添加一个伸缩因子 hbox.AddItem(spacerItem) // 按钮 (ok) ok := widgets.NewQPushButton2("OK", bottomLayoutwidget) // 添加子控件 hbox.AddWidget(ok, 0, 0) // 按钮 (cancel) cancel := widgets.NewQPushButton2("Cancel", bottomLayoutwidget) hbox.AddWidget(cancel, 0, 0) // 在 cancel 之后添加一个伸缩因子 hbox.AddItem(spacerItem) // 设置 centralWidget 控件铺满窗口 app.SetCentralWidget(centralWidget) return app } func main() { widgets.NewQApplication(len(os.Args), os.Args) app := InitUI() app.SetWindowIcon(gui.NewQIcon5("images/app.ico")) app.SetWindowTitle("水平垂直布局") // 获取窗口 取得屏幕中心坐标 fg := app.FrameGeometry() wc:= widgets.NewQDesktopWidget().AvailableGeometry2(app).Center() fg.MoveCenter(wc) // 设置窗口移动位置 app.Move(fg.TopLeft()) app.Show() widgets.QApplication_Exec() }

    预览

    Processed: 0.012, SQL: 8