1.1 therecipe/qt简介入门

可以参考文章:
https://www.cnblogs.com/apocelipes/p/9300335.html
环境搭建可以参考: http://doc.feijianshen.com/docs/golangsz/golangsz-1ahnidgm9ev2m
1.1 therecipe/qt简介入门
然后本书主要针对在win下开发,linux下暂且不考虑的。
首先你得安装git才可以哦
1.1 therecipe/qt简介入门
可能之前没有添加环境变量QT_MSYS2_STATIC,需要再添加一次,不然没有都得先执行export QT_MSYS2_STATIC=true,才可以
QT_DIR
QT_MSYS2_DIR
QT_MSYS2_STATIC
1.1 therecipe/qt简介入门

用到什么环境变量就添加环境变量
首先在自己的GitHub上建立文件夹
![](http://doc.feijianshen.com/uploads/201808/goqt/attach_154b17209ff6387d.png)
然后开始写代码,直接借用https://www.cnblogs.com/apocelipes/p/9300335.html的例子

```go
package main

import (
    "os"
    
    "github.com/therecipe/qt/core"
    "github.com/therecipe/qt/widgets"
)

func main() {
    widgets.NewQApplication(len(os.Args), os.Args)
    
    // left sider
    splitterLeft := widgets.NewQSplitter2(core.Qt__Horizontal, nil)
    textTop := widgets.NewQTextEdit2("左部文本", splitterLeft)
    splitterLeft.AddWidget(textTop)
    
    // right sider
    splitterRight := widgets.NewQSplitter2(core.Qt__Vertical, splitterLeft)
    textRight := widgets.NewQTextEdit2("右部文本", splitterRight)
    textbuttom := widgets.NewQTextEdit2("下部文本", splitterLeft)
    splitterRight.AddWidget(textRight)
    splitterRight.AddWidget(textbuttom)
    
    splitterLeft.SetWindowTitle("splitter")
    splitterLeft.Show()
    
    widgets.QApplication_Exec()
}

进行编译,可能速度有些慢
qtdeploy build desktop ../1.1/
1.1 therecipe/qt简介入门

https://github.com/kitech/qt.go/
这种方法,主要是解决编译速度问题,编译占用内存资源大的问题。
这是与现在therecipe/qt和go-qt绑定相比的,当前这种方式,编译过程时需要实时编译很多的C++代码,并且链接Qt5的库,所以特别慢,并且占用内存多,完全把go的编译速度优势丢失了。

这种新的方式,是使用libffi直接加载.so,而不是链接的方式编译,所以go binding编译时的速度会加快。在最近的实现版本中,qt5 for go binding的代码中已经完全不包含C/C++代码,不需要在.go文件引入cgo,编译过程达到原生go的速度。

基本测试,编译therecipe/qt的基本包,需要30分钟以上,最大使用内存达到3G。而编译该绑定的go库,只需要不到10分钟,内存占用最大1G。两者皆是原来的1/3,效果明显。特别是在使用go绑定做实际开发过程中,节省的编译时间也大大减少。同时最终编译得到的文件大小同样也会小很多。