【golang-GUI开发】Qt5的安装
golang一直被认为没有好的GUI库,事实并非如此。
目前有基于gtk+3.0的gotk3:https://github.com/gotk3/gotk3
以及接下来我们要说的qt:https://github.com/therecipe/qt ,这是基于最新的Qt5(5.11)的非官方的binding。
选用qt的理由
选择therecipe/qt的理由是首先因为它提供的API与原生Qt以及其他binding(例如pyqt5)几乎一样(少数区别我会在下面几篇文章仔细讲解);
其次是因为作者更新很勤快,bug的修复比较及时;
最后是因为Qt作为一种使用广泛的框架,文档丰富全面,社区活跃,如果你遇到了什么问题解决起来会更容易一些。
跨平台支持:
为什么不用gotk3
gtk+3同样是一个使用广泛跨平台的GUI框架,它同样功能丰富,有一群优秀的开发者在维护。
不过和Qt的规模相比还略显得小了一些,而且gtk+和python一样存在2和3两个版本的断桥式飞跃,从gtk+2迁移至3会遇到不少小麻烦;
gtk+的文档也没有Qt那样详尽;以及gotk3的维护并不活跃。
最重要一点,gotk3在并发使用时需要使用额外的API,不能直接和goroutine配合。
至于callback VS signal/slot,我对两者都不感冒,我个人有gtk+/gtkmm和Qt是使用经验,经验告诉我使用Qt会轻松很多。
所以基于如上原因,我选择了therecipe/qt这个库。
安装
接下来是如何安装这个Qt的golang binding。
在go get之前我们还有些准备工作要做。
首先是安装完整的Qt5,为什么要完整安装呢,因为这个库并没有选择安装模块的功能,缺模块会在以后使用时输出大量ERROR信息,我对终端输出有洁癖,所以全部安装保平安了,如果你觉得这样做不太舒服,可以积极提issues或者是技术大牛可以直接提交PR参与贡献 :- P。Qt下载地址:https://download.qt.io/official_releases/online_installers
Qt需要安装在你的$HOME目录下,为了避免日后使用中的问题,因为therecipe/qt使用Qt时,需要自己在qmake bin目录里生成一些工具的链接,如果你的Qt安装在非HoOME目录里,那很有可能需要使用权限,这样编译出来的库就只有权限用户能用了,所以建议将Qt5.11装在你的$HOME里,以及在接下的安装中请不要使用sudo等命令。
因为会安装Qt的源文件,所以安装时会有一定卡顿,等一会就好了。
然后是配置Qt的环境,修改你的~/.bash_profile,~/.profile,修改好后source ~/.bash_profile或者登出用户重新登录来使配置生效(当然,重新启动系统也可以)。
修改示例:
# ~/.bash_profile
# therecipe/qt 需要的环境变量
export QT_DIR='/home/用户名/Qt5.11.1' # 安装Qt的目录
export QT_VERSION='5.11.1' # Qt的版本号
export QT_DEBUG=false # 是否启用debug
export QT_STUB=false # 内存低于2Gb或32位系统才需要设置true # go1. cgo environments 使用go1.10时需要的设置
export CGO_CXXFLAGS_ALLOW=".*"
export CGO_LDFLAGS_ALLOW=".*"
export CGO_CFLAGS_ALLOW=".*"
除此之外还需要有g++5.0+以及一些OpenGL的依赖
# Debian/Ubuntu的安装命令
sudo apt-get -y install build-essential libglu1-mesa-dev libpulse-dev libglib2.-dev # Fedora/RHEL/CentOS
sudo yum -y groupinstall "C Development Tools and Libraries"
sudo yum -y install mesa-libGLU-devel gstreamer-plugins-base pulseaudio-libs-devel glib2-devel # openSUSE
sudo zypper -n install -t pattern devel_basis # Arch Linux
sudo pacman -S base-devel
在这些准备都做好之后,就可以开始安装therecipe/qt了。
这里介绍Liunx上的安装安装方法,因为我是在Linux上写代码的,
其他系统请移步此处:Windows:https://github.com/therecipe/qt/wiki/Installation-on-Windows , MacOS:https://github.com/therecipe/qt/wiki/Installation-on-macOS 。
安装qt-tools:
go get -u -v github.com/therecipe/qt/cmd/...
然后是安装bindings,记住远离sudo!!!
$GOPATH/bin/qtsetup
生成binding需要编译一些Qt的source文件,所以要花上一段时间,安装完成后会启动几个程序示例。
总体安装需要6Gb不到的磁盘空间(因人而异)。
至此安装结束,我们已经可以在程序里import github.com/therecipe/qt/widgets来使用各式各样的Qt组件了。
不过要想运行你的程序,光用go build是不行的,因为库使用了moc技术,下一篇博客(https://www.cnblogs.com/apocelipes/p/9300335.html)将会介绍如何编译使用了Qt的golang代码。
参考:
https://github.com/therecipe/qt/wiki/Installation
https://github.com/therecipe/qt/wiki/Installation-on-Linux
【golang-GUI开发】Qt5的安装的更多相关文章
- 使用 Eclipse 可视化插件 windowbuilder 进行Java GUI开发(插件安装的两种方法)
对于Java GUI开发 其实最方便的方法是用插件制作,当然先了解完代码原理是最好的. eclispe安装windowbuilder有两种方式,一种是离线安装,一种是在线安装. 一.第一种在线安装: ...
- Python3 GUI开发(PyQt)安装和配置
Python3 GUI开发(PyQt5)安装和配置: 下载安装好Miniconda3, 并且安装好jupyter 注意:最好关闭360杀毒软件或者把cmd加入信任,否则运行activate会有问题. ...
- Windows7下安装golang语言开发环境和revel框架
1.下载先去下载32位或64 golang window 安装包 并安装下载地址:https://www.golangtc.com/download 本人更改了安装地址为 D:\GO\Go 2. go ...
- Sublime Text3 + Golang搭建开发环境
Sublime Text3 + Golang搭建开发环境 http://blog.csdn.net/aqiang912/article/details/46775409 1.安装git 因为golan ...
- Python GUI开发环境的搭建
原文:Python GUI开发环境的搭建 最近对Python的开发又来了兴趣,对于Python的开发一直停留在一个表面层的认识,玩的部分比较大. Python的入手简单,语法让人爱不释手,在网络通信方 ...
- php 图形用户界面GUI 开发
php 图形用户界面GUI 开发 一.下载指定系统扩展 1 2 http://pecl.php.net/package/ui http://pecl.php.net/package/ui/2.0.0/ ...
- 程序员之路:python3+PyQt5+pycharm桌面GUI开发(转)
程序员之路:python3+PyQt5+pycharm桌面GUI开发 http://blog.sina.com.cn/s/blog_989218ad0102wz1k.html 先看效果: 图 1 没错 ...
- Python3+PyQt5+PyCharm 桌面GUI开发环境搭建
Python3+PyQt5+PyCharm 桌面GUI开发环境搭建 一.安装python PyQt5所支持的python版本是不低于3.5版本 python3.5以上的版本安装:https://www ...
- Golang的开发环境配置之SlickEdit篇
Golang的开发环境通常有如下三种: 1. vi, emacs, notepad++ 2. Sublime Text 2/3 3. LiteIDE 不过,今天我想体验一下在slickedit当中使用 ...
- go 语言开发环境的安装与配置
go 语言开发环境的安装与配置 编辑器选择 一直以来都是用sublime,但是听说sublime对于golang的插件支持并不是特别完善,并且VS Code只要在自身所带的扩展商店里安装go插件就可以 ...
随机推荐
- stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h文件作用
如上图,在STM32的Keil工程文件(Project)中一般都包含stm32f10x_it.c.stm32f10x_it.h和stm32f10x_conf.h这三个文件,但是在ST官方提供的标准库“ ...
- noip第30课资料
- HDU5816 Hearthstone
Hearthstone Time Limit: 2000/ ...
- InetAddress and InetSocketAddress
1.InetAddress(包含IP地址及主机名) InetAddress is = InetAddress.getLocalHost(); /* 通过静态方法获得本机的对象 */ System.ou ...
- #254 Find the Longest Word in a String
找出最长单词 在句子中找出最长的单词,并返回它的长度. 函数的返回值应该是一个数字. 当你完成不了挑战的时候,记得开大招'Read-Search-Ask'. 这是一些对你有帮助的资源: String. ...
- 《HTTP权威指南》6-代理
Web的中间实体 HTTP的代理服务器既是Web服务器又是Web客户端,它既需要正确地处理从客户端发来的请求和连接,返回响应,有需要向服务器发送请求,并接受响应. 私有和共享代理 代理服务器可以是某个 ...
- 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法
不知道你有没有遇到过这样的问题,网站访客多起来后,心里很是高兴,加上了Nginx反向代理,出问题了 原来是这么写的: Request.Url.ToString() 输出是这样的: http://www ...
- Android插件化的兼容性(下):突破Android P中灰黑名单的限制
在Android P系统中,加入了访问私有API接口的限制.
- 干货---stm32f103之DMA双缓冲__也算我为网络贡献的微薄之力
思考再三:终究是要拿出一些干货--单片机基础核心代码,串口的高效率使用请这里开始.--举一反三,我只列出串口一的双dma缓冲应用范例,剩下的自己扩展.并给与了我迄今觉得最好的串口配置架构-感谢野火的高 ...
- Python 操作excel之 openpyxl模块
1. 安装 pip install openpyxl 想要在文件中插入图片文件,需要安装pillow,安装文件:PIL-fork-1.1.7.win-amd64-py2.7.exe · font(字体 ...