Go Qt5 创建空白窗口、窗口居中及关闭窗口事件
关闭窗口按钮
func closeWindow(app *widgets.QMainWindow) {
// 创建按钮
btn := widgets.NewQPushButton2("关闭窗口", app)
// 设置按钮大小
btn.Resize(btn.SizeHint())
// 移动按钮位置
btn.Move2(100, 100)
btn.SetToolTip("这是一个 <b>QPushButton</b> 控件")
// 按钮点击事件
btn.ConnectClicked(func(bool) {
app.Close()
})
}
控制窗口显示在屏幕中心的方法
// 控制窗口显示在屏幕中心的方法
func center(app *widgets.QMainWindow) {
// 获得窗口
qr := app.FrameGeometry()
// 获得屏幕中心点
cp := widgets.NewQDesktopWidget().AvailableGeometry2(app).Center()
// 显示到屏幕中心
qr.MoveCenter(cp)
app.Move(qr.TopLeft())
}
关闭窗口前处理事件
func CloseWindowEvent(event *gui.QCloseEvent){
reply := widgets.QMessageBox_Question(nil, "提示消息", "确定关闭窗口吗?", widgets.QMessageBox__Yes|widgets.QMessageBox__No, widgets.QMessageBox__Yes)
if reply == widgets.QMessageBox__Yes {
event.Accept()
} else {
event.Ignore()
}
}
完整代码
/*-------------------------------------------------------------------
| Project : goland
| Author : 今夕何夕
| QQ/Email : 184566608<qingyueheji@qq.com>
| Time : 2020-10-07 14:17
| Describe : main
+------------------------------------------------------------------*/
package main
import (
"github.com/therecipe/qt/gui"
"github.com/therecipe/qt/widgets"
"os"
)
// 关闭窗口
func closeWindow(app *widgets.QMainWindow) {
// 创建按钮
btn := widgets.NewQPushButton2("关闭窗口", app)
// 设置按钮大小
btn.Resize(btn.SizeHint())
// 移动按钮位置
btn.Move2(100, 100)
btn.SetToolTip("This is a <b>QPushButton</b> widget")
// 按钮点击事件
btn.ConnectClicked(func(bool) {
app.Close()
})
}
// 控制窗口显示在屏幕中心的方法
func center(app *widgets.QMainWindow) {
// 获得窗口
qr := app.FrameGeometry()
// 获得屏幕中心点
cp := widgets.NewQDesktopWidget().AvailableGeometry2(app).Center()
// 显示到屏幕中心
qr.MoveCenter(cp)
app.Move(qr.TopLeft())
}
// 关闭窗口前处理事件
func CloseWindowEvent(event *gui.QCloseEvent){
reply := widgets.QMessageBox_Question(nil, "提示消息", "确定关闭窗口吗?", widgets.QMessageBox__Yes|widgets.QMessageBox__No, widgets.QMessageBox__Yes)
if reply == widgets.QMessageBox__Yes {
event.Accept()
} else {
event.Ignore()
}
}
// 初始化窗口
func InitUi() *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"))
// 关闭窗口
closeWindow(app)
// 更改窗口关闭默认事件
app.ConnectCloseEvent(CloseWindowEvent)
return app
}
func main() {
// 创建一个应用程序对象
// sys.argv参数是一个列表,从命令行输入参数
widgets.NewQApplication(len(os.Args), os.Args)
// 初始化窗口
app := InitUi()
// 窗口居中
center(app)
// 显示组件
app.Show()
// 确保应用程序干净的退出
widgets.QApplication_Exec()
}
预览