[教程]Go Qt5 的一个简单示例
Tofloor
poster avatar
Bluek404
deepin
2014-05-05 06:49
Author
  1.     package main
  2.     import (
  3.     “fmt”
  4.     “github.com/salviati/go-qt5/qt5″
  5.     )
  6.     var (
  7.     exit         = make(chan bool)
  8.     alreadyCheck bool
  9.     )
  10.     func main() {
  11.     qt5.Main(func() {
  12.     go ui_main()
  13.     qt5.Run()
  14.     exit <- true
  15.     })
  16.     }
  17.     func ui_main() {
  18.     w := qt5.NewWidget()
  19.     w.SetWindowTitle(“登陆窗口”) //设置窗口标题
  20.     w.SetSizev(300, 100)     //设置窗口大小
  21.     //================= vbox1 =================
  22.     vbox1 := qt5.NewVBoxLayout() //创建一个容器
  23.     lbl1 := qt5.NewLabel() //创建标签
  24.     lbl1.SetText(“用户名:”)   //设置文本
  25.     lbl2 := qt5.NewLabel() //创建标签
  26.     lbl2.SetText(“密码:”)    //设置文本
  27.     vbox1.AddWidget(lbl1) //在容器里添加控件
  28.     vbox1.AddWidget(lbl2) //在容器里添加控件
  29.     //================= vbox2 =================
  30.     vbox2 := qt5.NewVBoxLayout()
  31.     ed1 := qt5.NewLineEdit() //创建编辑框
  32.     ed2 := qt5.NewLineEdit() //创建编辑框
  33.     ed2.SetEchoMode(2)       //设置文本框为密码模式
  34.     vbox2.AddWidget(ed1) //在容器里添加控件
  35.     vbox2.AddWidget(ed2) //在容器里添加控件
  36.     //================= hbox1 =================
  37.     hbox1 := qt5.NewHBoxLayout()
  38.     hbox1.AddLayout(vbox1)
  39.     hbox1.AddLayout(vbox2)
  40.     //================= hbox2 =================
  41.     hbox2 := qt5.NewHBoxLayout()
  42.     chk1 := qt5.NewCheckBox() //创建一个选择框
  43.     chk1.SetText(“记住密码”)
  44.     chk2 := qt5.NewCheckBox() //创建一个选择框
  45.     chk2.SetText(“自动登录”)
  46.     hbox2.AddWidget(chk1) //在容器里添加控件
  47.     hbox2.AddWidget(chk2) //在容器里添加控件
  48.     //================= vbox3 =================
  49.     vbox3 := qt5.NewVBoxLayout()
  50.     btn1 := qt5.NewButtonWithText(“确定”) //直接用文本为内容创建一个按钮(其他控件也可以这么创建)
  51.     vbox3.AddLayout(hbox1) //在容器里添加控件
  52.     vbox3.AddLayout(hbox2) //在容器里添加控件
  53.     vbox3.AddWidget(btn1)  //在容器里添加控件
  54.     //================= BOX END =================
  55.     btn1.OnClicked(func() { //按钮1被点击时触发的事件
  56.     fmt.Println(“用户名:”, ed1.Text())
  57.     fmt.Println(“密码:”, ed2.Text())
  58.     qt5.Exit(0)
  59.     })
  60.     ed1.OnTextChanged(func(string) { //当编辑框1内文本被改变时触发的事件
  61.     fmt.Println(ed1.Text())
  62.     })
  63.     ed2.OnTextChanged(func(string) { //当编辑框2内文本被改变时触发的事件
  64.     fmt.Println(ed2.Text())
  65.     })
  66.     chk1.OnStateChanged(func(int) { //当选择框选择被改变时触发的事件
  67.     fmt.Println(“保存密码选项改变”)
  68.     })
  69.     chk2.OnStateChanged(func(int) { //当选择框选择被改变时触发的事件
  70.     fmt.Println(“自动登陆选项改变”)
  71.     if chk2.Check() == 2 {
  72.     if chk1.Check() == 2 { //检查保存密码选项是否已经被选择,保存状态
  73.     alreadyCheck = true
  74.     } else {
  75.     alreadyCheck = false
  76.     chk1.SetCheck(2) //如果保存密码选项没有被开启,那么开启保存密码
  77.     }
  78.     fmt.Println(“自动登陆开启”)
  79.     } else {
  80.     if alreadyCheck == true {
  81.     //如果保存密码选项之前就被开启了,那么不做改变(继续保持开启)
  82.     } else {
  83.     chk1.SetCheck(0) //保存密码选项之前没有被开启,那么恢复原来的状态
  84.     }
  85.     fmt.Println(“自动登陆关闭”)
  86.     }
Copy the Code
DeepinScreenshot20140504124708.png
DeepinScreenshot20140504224134.png
只写了前端和逻辑部分
保存密码到配置文件之类的没写
注释应该是我有史以来写的最全的一次了 :cry: (感动)
最后吐槽一下一个框框套一个框框表示要疯掉了……
然后我博客文章地址:http://blog.bluek404.net/164 (帮忙刷点点击量啥的 :mrgreen: )
Reply Favorite View the author
All Replies
Bluek404
deepin
2014-05-05 06:51
#1
DeepinScreenshot20140504225036.png
框框是这么套的
编译好的程序下载(不知能否运行):
http://pan.baidu.com/s/1bnF1Lcr
Reply View the author
yeser
deepin
2014-05-05 07:39
#2
帮你改了哈标题!以后整理起来就方便多了
Reply View the author
Bluek404
deepin
2014-05-05 08:47
#3
帮你改了哈标题!以后整理起来就方便多了
其实这货不算教程的
顶多就是个开发资源什么的
Reply View the author