《Go语言从入门到精通》Go语言进行图形界面开发_第1页
《Go语言从入门到精通》Go语言进行图形界面开发_第2页
《Go语言从入门到精通》Go语言进行图形界面开发_第3页
《Go语言从入门到精通》Go语言进行图形界面开发_第4页
《Go语言从入门到精通》Go语言进行图形界面开发_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Go语言进行图形界面开发Go语言从入门到精通了解Go语言进行图形开发的几种途径了解Go语言支持WEB界面开发的方式01GUI02QT03WEBUItarget目标了解用Qt等第三方框架进行图形界面开发的方法Go语言的GUI开发支持Go语言并没有官方可用的图形界面(GUI)开发包,Go语言原生目标并不包括GUI开发但用Go语言开发GUI并非不可行

Qt、Fyne、GoVCL、Go-sciter都是实际可用的选择目录导航15.1使用Qt开发图形界面Contents安装Qt开发环境安装Qt开发环境安装/therecipe/qt包goget-v/therecipe/qt/cmd/...Qt开发实例-1//

创建一个图形窗口应用appT

:=

widgets.NewQApplication(len(os.Args),

os.Args)

//

创建一个最小为

250*200

大小的主窗口//

并设置窗口标题为

"十六进制编码"windowT

:=

widgets.NewQMainWindow(nil,

0)windowT.SetMinimumSize2(250,

200)windowT.SetWindowTitle("十六进制编码")Qt开发实例-2//

创建一个

widget//

使用QVBoxLayout布局,即纵向顺序排放控件的布局//

并使其居中widgetT

:=

widgets.NewQWidget(nil,

0)widgetT.SetLayout(widgets.NewQVBoxLayout())windowT.SetCentralWidget(widgetT)

//

在上述widget中创建两个纯文本编辑框//

编辑框内都有提示文本input1

:=

widgets.NewQPlainTextEdit(nil)input1.SetPlaceholderText("在此输入要编码的文本……")input1.SetFixedHeight(100)widgetT.Layout().AddWidget(input1)

input2

:=

widgets.NewQPlainTextEdit(nil)input2.SetPlaceholderText("此处将显示编码后的十六进制文本")input2.SetFixedHeight(100)widgetT.Layout().AddWidget(input2)Qt开发实例-3//

再创建一个按钮并设置点击事件的处理函数buttonT

:=

widgets.NewQPushButton2("编码",

nil)

//

设置buttonT按钮处理点击事件的函数buttonT.ConnectClicked(func(bool)

{

//

将input2编辑框中的文字设置成input1编辑框中文字十六进制编码后的文本

input2.SetPlainText(hex.EncodeToString([]byte(input1.ToPlainText())))

//

弹出消息框提示操作成功

widgets.QMessageBox_Information(nil,

"OK",

"编码完毕",

widgets.QMessageBox__Ok,

widgets.QMessageBox__Ok)})

widgetT.Layout().AddWidget(buttonT)Qt开发实例-4//

显示主窗口windowT.Show()

//

运行该图形应用程序//

直至遇到调用app.Exit()函数//

或者用户关闭该程序的主窗口appT.Exec()Qt开发程序的部署运行效果Qt图形界面中的并发安全Signal/Slot机制目录导航15.2使用govcl包开发图形界面ContentsLCL库从Delphi的VCL界面库发展而来

LCL库使用完全免费

跨平台

默认UTF-8编码免费的FreePascal,免费的Lazarus

IDE环境

GoVCL包支持在Go语言中进行LCL界面开发,发布时仅需附带一个动态链接库文件核心代码示例f.SetCaption("第一个例子")

//

设置主窗体标题f.SetBounds(0,

0,

320,

240)

//

设置主窗体大小f.Font().SetName("Simhei")//

设置窗窗体内所有控件的字体样式f.Font().SetSize(11)

f.Label1

=

vcl.NewLabel(f)

//

新建标签对象f.Label1.SetParent(f)

//

设置其父控件为主窗体f.Label1.SetBounds(20,

20,

50,

28)

//

设置位置和大小f.Label1.SetCaption("原文本")

//

设置标签文字f.Edit1

=

vcl.NewEdit(f)//

设置第一个文本编辑框控件f.Edit1.SetParent(f)f.Edit1.SetBounds(120,

20,

160,

28)

f.Button1

=

vcl.NewButton(f)//

设置按钮控件f.Button1.SetParent(f)f.Button1.SetBounds(100,

108,

48,

28)f.Button1.SetCaption("编码")f.Button1.SetOnClick(f.OnButtonClick)//

设置按钮控件的点击事件处理函数GoVCL开发的界面运行效果使用vcl.ThreadSync实现并发安全vcl.ThreadSync(func()

{

//

获取Label1的文字

textT

:=

mainForm.Label1.Caption()

//

选取分割后第一个部分,即序号部分

textT

=

strings.Split(textT,

"_")[0]

//

显示所取的updateLabel1函数启动的goroutine序号以及当前计算的Π值

mainForm.Label2.SetCaption(fmt.Sprintf("[%v]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论