-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathmain.go
91 lines (71 loc) · 2.25 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package main
import (
"os"
"github.com/therecipe/qt/core"
"github.com/therecipe/qt/gui"
"github.com/therecipe/qt/widgets"
)
// 控制窗口显示在屏幕中心的方法
func center(app *widgets.QMainWindow) {
// 获得窗口
qr := app.FrameGeometry()
// 获得屏幕中心点
cp := widgets.NewQDesktopWidget().AvailableGeometry2(app).Center()
// 显示到屏幕中心
qr.MoveCenter(cp)
app.Move(qr.TopLeft())
}
// InitMainWindow 初始化主窗口
func InitMainWindow() *widgets.QMainWindow {
// 创建窗口
app := widgets.NewQMainWindow(nil, 0)
// 设置窗口的标题
app.SetWindowTitle("Qt 教程")
// 设置窗口的位置和大小
app.SetGeometry2(300, 300, 300, 220)
// 设置窗口的图标,引用当前目录下的web.png图片
app.SetWindowIcon(gui.NewQIcon5("images/app.ico"))
return app
}
// InitComponents 初始化组件
func InitComponents(app *widgets.QMainWindow) {
// 布局窗口组件载体
widget := widgets.NewQWidget(app, core.Qt__Widget)
widget.SetGeometry2(0, 0, 300, 220)
app.SetCentralWidget(widget)
lbl := widgets.NewQLabel2("Knowledge only matters", widget, 0)
lbl.Move2(130, 20)
btn := widgets.NewQPushButton2("Dialog", widget)
// btn.SetSizePolicy(widgets.QSizePolicy__Fixed)
btn.Move2(20, 20)
vbox := widgets.NewQVBoxLayout2(widget)
vbox.AddWidget(lbl, 0, core.Qt__AlignLeft)
vbox.AddWidget(btn, 0, core.Qt__AlignLeft)
btn.ConnectClicked(func(checked bool) {
// 这一行代码弹出字体选择对话框,GetFont2()方法返回字体名称和ok参数,
//如果用户点击了ok他就是True,否则就是false
ok := false
initialFont := gui.NewQFont2("Times", 100, 0, true)
font := widgets.NewQFontDialog(app).
GetFont(&ok, initialFont, app, "xxx", widgets.QFontDialog__DontUseNativeDialog)
// 如果我们点击了ok,标签的字体就会被改变
if ok {
lbl.SetFont(font)
}
})
}
func main() {
// 创建一个应用程序对象
// sys.argv参数是一个列表,从命令行输入参数
widgets.NewQApplication(len(os.Args), os.Args)
// 初始化主窗口
app := InitMainWindow()
// 初始化组件
InitComponents(app)
// 控制窗口显示在屏幕中心的方法
center(app)
// 显示主窗口
app.Show()
// 确保应用程序干净的退出
widgets.QApplication_Exec()
}