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()
}
}
完整代码
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)
app
.SetWindowIcon(gui
.NewQIcon5("images/app.ico"))
closeWindow(app
)
app
.ConnectCloseEvent(CloseWindowEvent
)
return app
}
func main() {
widgets
.NewQApplication(len(os
.Args
), os
.Args
)
app
:= InitUi()
center(app
)
app
.Show()
widgets
.QApplication_Exec()
}
预览
转载请注明原文地址:https://blackberry.8miu.com/read-30397.html