GO QT5 水平垂直佈局
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()
}
預覽
相關文章
- Flutter佈局篇(1)–水平和垂直佈局詳解Flutter
- Flutter佈局篇(1)--水平和垂直佈局詳解Flutter
- android筆記二(水平佈局與垂直佈局)Android筆記
- CSS佈局之水平居中和垂直居中CSS
- 元素水平垂直居中【彈性佈局 || Translate】
- Flutter基礎-009-Row水平佈局與Column垂直佈局Flutter
- 水平垂直居中佈局的多種實現方式
- CSS 佈局之水平居中佈局CSS
- css經典佈局系列一——垂直居中佈局CSS
- 佈局總結-水平居中佈局的實現
- [css佈局1]不知寬高情況下,水平垂直居中的幾種方式CSS
- flex彈性佈局 垂直居中Flex
- CSS多種佈局方式自我實現-水平佈局(二)CSS
- 淺談居中問題(水平居中、垂直居中、水平垂直居中)
- css水平垂直居中CSS
- CSS垂直水平居中CSS
- 元素垂直水平居中
- 網頁佈局實現之div垂直居中網頁
- ConstraintLayout 水平比例佈局 1:1:2AI
- 2020-12-17 html、css面試題3: 水平垂直居中,左右固定中間自適應 三欄佈局,靜態佈局、自適應佈局、流式佈局、響應式佈局、彈性佈局,IE中常見的相容性問題,清空陣列的方法HTMLCSS面試題陣列
- 6.6水平垂直越權
- Flex佈局-垂直居中並換行顯示內容Flex
- 總結幾種常見的垂直居中的佈局
- Go + AideLua 實現雲端佈局GoAIIDE
- CSS垂直居中和水平居中CSS
- 如何實現水平垂直居中?
- css水平、垂直居中的方法CSS
- CSS水平居中和垂直居中CSS
- css div全屏水平垂直居中CSS
- CSS按鈕垂直水平居中CSS
- CSS視窗垂直水平居中CSS
- 父盒子寬度不固定水平居中彈性佈局
- 水平居中、垂直居中、水平垂直居中、浮動居中、絕對定位居中…….幫你搞定
- [譯]Go語言記憶體佈局Go記憶體
- 設定圖片水平垂直居中
- 水平垂直居中的實現方法
- 元素自適應水平垂直居中
- 元素水平居中,垂直居中方法