利用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/qtqamel选了。本人也是两个库都安装了一次,therecipe/qt可以说是非常的坑,像什么无法初始化工具qtsetup、go mod项目无法编译、编译速度太慢体积过大等等;而qamel的安装可谓一路没有坑点,每一步他都有详细的说明,除非你看不懂英文绝对不会犯错误,并且编译速度非常快但是支持的平台太少了。因此总结如下:

  • 如果你有跨平台的要求如Windows、MacOs、Linux互通,则选择therecipe/qt
  • 如果你想要快速的编译速度则选择qamel
  • 如果你不想本机配置环境想通过docker则两者都可以
  • 如果你想要一个简单的够用的工具则选择qamel

以上是关于利用Qml与Golang打造Gui客户端的主要内容,如果未能解决你的问题,请参考以下文章

Go语言的GUI方案,与Qt和QML都能绑定,也有从头写的gxui

golang代码片段(摘抄)

26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段

golang goroutine例子[golang并发代码片段]

手把手带你打造一款 "签名设计" 的GUI图形界面!

用Tkinter打造自己的Python IDE开发工具利用HP_tk模块设计自己的代码编辑器