jinying8869 发表于 2018-9-20 12:37:03

【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.
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技术,下一篇博客(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


页: [1]
查看完整版本: 【golang-GUI开发】Qt5的安装