【golang-GUI开发】Qt5的安装

golang一直被认为没有好的GUI库,事实并不是如此。html

目前有基于gtk+3.0的gotk3:https://github.com/gotk3/gotk3python

以及接下来咱们要说的qt:https://github.com/therecipe/qt ,这是基于最新的Qt5(5.11)的非官方的binding。linux

选用qt的理由git

选择therecipe/qt的理由是首先由于它提供的API与原生Qt以及其余binding(例如pyqt5)几乎同样(少数区别我会在下面几篇文章仔细讲解);github

其次是由于做者更新很勤快,bug的修复比较及时;golang

最后是由于Qt做为一种使用普遍的框架,文档丰富全面,社区活跃,若是你遇到了什么问题解决起来会更容易一些。bash

跨平台支持:并发

为何不用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.10 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.0-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技术,下一篇博客(http://www.javashuo.com/article/p-pyayxnie-ee.html)将会介绍如何编译使用了Qt的golang代码。

 

参考:

https://github.com/therecipe/qt/wiki/Installation

https://github.com/therecipe/qt/wiki/Installation-on-Linux

相关文章
相关标签/搜索