【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

相關文章
相關標籤/搜索