Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
[教程]Go Qt5 的一个简单示例
社区开发
2962
views ·
3
replies ·
To
floor
Go
Bluek404
deepin
2014-05-05 06:49
Author
package main
import (
“fmt”
“github.com/salviati/go-qt5/qt5″
)
var (
exit = make(chan bool)
alreadyCheck bool
)
func main() {
qt5.Main(func() {
go ui_main()
qt5.Run()
exit <- true
})
}
func ui_main() {
w := qt5.NewWidget()
w.SetWindowTitle(“登陆窗口”) //设置窗口标题
w.SetSizev(300, 100) //设置窗口大小
//================= vbox1 =================
vbox1 := qt5.NewVBoxLayout() //创建一个容器
lbl1 := qt5.NewLabel() //创建标签
lbl1.SetText(“用户名:”) //设置文本
lbl2 := qt5.NewLabel() //创建标签
lbl2.SetText(“密码:”) //设置文本
vbox1.AddWidget(lbl1) //在容器里添加控件
vbox1.AddWidget(lbl2) //在容器里添加控件
//================= vbox2 =================
vbox2 := qt5.NewVBoxLayout()
ed1 := qt5.NewLineEdit() //创建编辑框
ed2 := qt5.NewLineEdit() //创建编辑框
ed2.SetEchoMode(2) //设置文本框为密码模式
vbox2.AddWidget(ed1) //在容器里添加控件
vbox2.AddWidget(ed2) //在容器里添加控件
//================= hbox1 =================
hbox1 := qt5.NewHBoxLayout()
hbox1.AddLayout(vbox1)
hbox1.AddLayout(vbox2)
//================= hbox2 =================
hbox2 := qt5.NewHBoxLayout()
chk1 := qt5.NewCheckBox() //创建一个选择框
chk1.SetText(“记住密码”)
chk2 := qt5.NewCheckBox() //创建一个选择框
chk2.SetText(“自动登录”)
hbox2.AddWidget(chk1) //在容器里添加控件
hbox2.AddWidget(chk2) //在容器里添加控件
//================= vbox3 =================
vbox3 := qt5.NewVBoxLayout()
btn1 := qt5.NewButtonWithText(“确定”) //直接用文本为内容创建一个按钮(其他控件也可以这么创建)
vbox3.AddLayout(hbox1) //在容器里添加控件
vbox3.AddLayout(hbox2) //在容器里添加控件
vbox3.AddWidget(btn1) //在容器里添加控件
//================= BOX END =================
btn1.OnClicked(func() { //按钮1被点击时触发的事件
fmt.Println(“用户名:”, ed1.Text())
fmt.Println(“密码:”, ed2.Text())
qt5.Exit(0)
})
ed1.OnTextChanged(func(string) { //当编辑框1内文本被改变时触发的事件
fmt.Println(ed1.Text())
})
ed2.OnTextChanged(func(string) { //当编辑框2内文本被改变时触发的事件
fmt.Println(ed2.Text())
})
chk1.OnStateChanged(func(int) { //当选择框选择被改变时触发的事件
fmt.Println(“保存密码选项改变”)
})
chk2.OnStateChanged(func(int) { //当选择框选择被改变时触发的事件
fmt.Println(“自动登陆选项改变”)
if chk2.Check() == 2 {
if chk1.Check() == 2 { //检查保存密码选项是否已经被选择,保存状态
alreadyCheck = true
} else {
alreadyCheck = false
chk1.SetCheck(2) //如果保存密码选项没有被开启,那么开启保存密码
}
fmt.Println(“自动登陆开启”)
} else {
if alreadyCheck == true {
//如果保存密码选项之前就被开启了,那么不做改变(继续保持开启)
} else {
chk1.SetCheck(0) //保存密码选项之前没有被开启,那么恢复原来的状态
}
fmt.Println(“自动登陆关闭”)
}
Copy the Code
DeepinScreenshot20140504124708.png
DeepinScreenshot20140504224134.png
只写了前端和逻辑部分
保存密码到配置文件之类的没写
注释应该是我有史以来写的最全的一次了 :cry: (感动)
最后吐槽一下一个框框套一个框框表示要疯掉了……
然后我博客文章地址:
http://blog.bluek404.net/164
(帮忙刷点点击量啥的 :mrgreen: )
Reply
Like 0
Favorite
View the author
All Replies
Bluek404
deepin
2014-05-05 06:51
#1
DeepinScreenshot20140504225036.png
框框是这么套的
编译好的程序下载(不知能否运行):
http://pan.baidu.com/s/1bnF1Lcr
Reply
Like 0
View the author
yeser
deepin
2014-05-05 07:39
#2
帮你改了哈标题!以后整理起来就方便多了
Reply
Like 0
View the author
Bluek404
deepin
2014-05-05 08:47
#3
帮你改了哈标题!以后整理起来就方便多了
其实这货不算教程的
顶多就是个开发资源什么的
Reply
Like 0
View the author
Please
sign
in first
Featured Collection
Change
UOS AI 2.8 Released! Three New Intelligent Agents & Major Evolution
Solid Q&A | deepin 25 Common Questions – The Immutable System Edition
New Thread
Popular Events
More
DeepinScreenshot20140504224134.png
只写了前端和逻辑部分
保存密码到配置文件之类的没写
注释应该是我有史以来写的最全的一次了 :cry: (感动)
最后吐槽一下一个框框套一个框框表示要疯掉了……
然后我博客文章地址:http://blog.bluek404.net/164 (帮忙刷点点击量啥的 :mrgreen: )