golang GUI開發 Qt5的安裝

2022-01-10 09:09:28 字數 2669 閱讀 2937

golang一直被認為沒有好的gui庫,事實並非如此。

目前有基於gtk+3.0的gotk3:

以及接下來我們要說的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之前我們還有些準備工作要做。

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.

10cgo 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:/wiki/installation-on-windows , macos:/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元件了。

參考:/wiki/installation

/wiki/installation-on-linux

Qt5外掛程式開發

在工程目錄,也就是需要新增外掛程式的工程下,建立乙個新的類,可以稱作介面類,需要注意的是介面類必須是乙個純虛函式 在介面類的最後,必須使用巨集q declare inte ce 他的第乙個引數是這個介面的名字,第二個引數是乙個確定介面的字串。ifndef filterinte ce h define...

Qt5開發 的QEvent事件類

事件種類 qtimerevent 定時器事件 qmouseevent 滑鼠事件 qwheelevent 滑動滑鼠滑輪事件 qtabletevent qkeyevent 鍵盤事件 qfocusevent 焦點事件 qpaintevent 繪畫事件 qmoveevent 移動事件 qresizeeven...

Qt5 嵌入式裝置QT5動態庫編譯,QT5移植

perl 5.8 or later python 2.7 or later c compiler supporting the c 98 standard sdk提供 編譯套裝 sudo apt get install build essential sudo apt get install git...