案例说明
- 在示例中我们重新实现了 keyPressEvent()事件处理器。
- 我们按下Escape键打印输出.
- 在Qt5中常通过重新实现事件处理器来处理事件。
此案例留有bug:不支持标准事件(core.Qt__Key_Escape),类型不匹配!
demo.go
package main
import (
"fmt"
"github.com/therecipe/qt/core"
"github.com/therecipe/qt/gui"
"github.com/therecipe/qt/widgets"
"os"
"reflect"
)
func keyPressEvent(event *gui.QKeyEvent) {
fmt.Println(reflect.TypeOf(event.Key()), event.Key())
fmt.Println(reflect.TypeOf(core.Qt__Key_Escape), core.Qt__Key_Escape, int(core.Qt__Key_Escape))
if event.Key() == 32 {
fmt.Println("空格")
}
}
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"))
app.ConnectKeyPressEvent(keyPressEvent)
return app
}
func main() {
widgets.NewQApplication(len(os.Args), os.Args)
app := InitUi()
app.Show()
widgets.QApplication_Exec()
}