利用Qml与Golang打造Gui客户端
Posted kamir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用Qml与Golang打造Gui客户端相关的知识,希望对你有一定的参考价值。
前言
本人一直在寻求一个利用golang来编写linux的gui程序的工具,凑巧之间发现了qml这个好东西。其简单的语法加上底层c++(Qt)的支持让我直接就爱上了他,并且众所周知,golang可以与c++进行交互那么既然c++可以和qml进行通信,那么golang也可以与qml进行通信。Qt官方虽然没有关于golang的官方支持(Python有PyQt),但是github上有很多第三方的支持库。这里挑三个典型的qml&golang的第三方库区分下优缺点,并选出我个人认为最适用的来进行后续Gui程序的编写
Go-Qml、therecipe/qt、qamel对比
Go-Qml(Github)
go-qml
这个库可以说是想到的最早支持golang&qml的第三方库了,百度上大多数golang和qml通信的教程也是关于这个库的
优点:
- 百度资料丰富,上手简单
- 有官方的教程视频,可以边看边学
缺点:
- 很久不更新维护了
therecipe/qt(Github)
therecipe/qt
这个库可以说是目前支持golang&qml最齐全的第三方库库了,其坐拥7k的stars足以可见其效果有多??逼
优点:
- 功能最齐全
- 有官方examples
- 支持的平台最丰富,支持Windows / macOS / Linux / FreeBSD / android / ios / Sailfish OS / Raspberry Pi / AsteroidOS / Ubuntu Touch / javascript / WebAssembly
- 支持docker
缺点:
- 安装比较困难,由于国内某个原因,在安装的时候会有很多网络问题,建议git下来自行编译安装
- 需要安装Qt的全部组件,如果在Qt安装时没有安装全部组件,在初始化过程中会报错尤其是QtScripts这个组件
- 体积庞大,编译一次需要生成很多中间c++代码,速度也比较慢,脱离了golang编译速度快的初衷
Qamel(Github)
qamel
这个库是受到therecipe/qt
这个项目的启发而创建的,其非常轻量,安装简单上手非常容易
优点:
- 安装非常简单,每一个步骤都有详细介绍,跟着一步一步做保证没有问题
- 有官方examples
- 编译速度很快,体积比
therecipe/qt
小 - 支持docker
缺点:
- 功能没有
therecipe/qt
完善 - 仅支持Linux,Windows系统交叉编译
小结
由于go-qml
已经很久没有维护了所以肯定不会选用他,剩下的就在therecipe/qt
和qamel
选了。本人也是两个库都安装了一次,therecipe/qt
可以说是非常的坑,像什么无法初始化工具qtsetup
、go mod项目无法编译、编译速度太慢体积过大等等;而qamel
的安装可谓一路没有坑点,每一步他都有详细的说明,除非你看不懂英文绝对不会犯错误,并且编译速度非常快但是支持的平台太少了。因此总结如下:
- 如果你有跨平台的要求如Windows、MacOs、Linux互通,则选择therecipe/qt
- 如果你想要快速的编译速度则选择qamel
- 如果你不想本机配置环境想通过docker则两者都可以
- 如果你想要一个简单的够用的工具则选择qamel
以上是关于利用Qml与Golang打造Gui客户端的主要内容,如果未能解决你的问题,请参考以下文章
Go语言的GUI方案,与Qt和QML都能绑定,也有从头写的gxui
26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段