-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathmain.go
87 lines (68 loc) · 2.01 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
package main
import (
"os"
"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"))
// 状态栏
//timeout: 显示时间, -1: 一直显示
app.StatusBar().ShowMessage("Ready", -1)
// app.StatusBar().ShowMessage("Ready", 5)
return app
}
// InitComponents 初始化组件
func InitComponents(app *widgets.QMainWindow) {
// 退出操作
exitAction := widgets.NewQAction3(gui.NewQIcon5("images/app.ico"), "&Exit", nil)
// 快捷键,自定义
exitAction.SetShortcut(gui.NewQKeySequence2("Ctrl+Q", gui.QKeySequence__NativeText))
// 提示语
exitAction.SetStatusTip("Exit application")
// 事件触发
exitAction.ConnectTriggered(func(checked bool) {
app.Close()
})
actions := widgets.NewQActionGroup(app)
actions.AddAction(exitAction)
//创建一个菜单栏
// menubar := widgets.NewQMenuBar(app)
menubar := app.MenuBar()
//添加菜单
fileMenu := menubar.AddMenu2("&File")
fileMenu.AddActions(actions.Actions())
}
func main() {
// 创建一个应用程序对象
// sys.argv参数是一个列表,从命令行输入参数
widgets.NewQApplication(len(os.Args), os.Args)
// 初始化主窗口
app := InitMainWindow()
// 初始化组件
InitComponents(app)
// 控制窗口显示在屏幕中心的方法
center(app)
// 显示主窗口
app.Show()
// 确保应用程序干净的退出
widgets.QApplication_Exec()
}