• 【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

  • 相关阅读:
    计算机网络原理精讲第一章--基本介绍
    tensorflow基础【8】-优化器
    tensorflow基础【7】-loss function
    循环神经网络(五)-LSTM进阶
    python23的区别-日常记录
    python 多版本共存
    再谈权重共享
    循环神经网络(四)-LSTM
    循环神经网络(二)-极其详细的推导BPTT
    链式法则玩转反向传播
  • 原文地址:https://www.cnblogs.com/apocelipes/p/9296754.html
Copyright © 2020-2023  润新知