Golang中使用Qt库(therecipe/qt)+QtDesigner + Goland (一) 环境搭建

2023-05-16

Note: 开启模块支持, 设置国内高速代理, 参考 - https://www.jianshu.com/p/d782d70b3a25

简介

搭建的目的只是刚好看到有这么一个模块, 还有给使用Go的人需要用到调试界面的时候用一下,真正开发界面并不建议用,没必要, 还有缺点就是在windows平台下编译偏慢, 还有其他一些UI

纯Go开发的UI - https://github.com/mjl-/duit

 

QtDesigner + Golang 

安装 ui 转 golang 工具 goqtuic

// 执行完毕之后在GOPATH/bin目录下生成 goqtuic.exe 执行程序
go get -u -v github.com/stephenlyu/goqtuic

(1) goqtuic.exe -h
  Usage of E:\CodePath\Golang\bin\goqtuic.exe:
  -go-test-file string  // 生成测试文件
        Test go file path 
  -go-ui-dir string // ui文件转换成的go文件放置路径
        Generated ui go files directory (default "uigen") 
  -ui-file string // ui文件的目录或者路径
        QT Designer ui file or directory (default "ui")

(2) 将xx.ui文件转化成golang文件并放到目录uitogo下
    goqtuic -go-ui-dir="uitogo" -ui-file=xx.ui 

   使用QtDesigner设计视图, 并保存

     (1) QtDesigner编辑如下UI, 并保存为login.ui

     

  (2) 使用 goqtuic 工具将login.ui转成 golang代码

  goqtuic -go-ui-dir="uitogo" -ui-file=login.ui 

此时login.ui所在目录下有了新的目录uitogo, 且uitogo目录下有文件login_ui.go生成 

此时还运行不起来, 因为生成的login_ui.go是基于 github.com/therecipe/qt 的,还需要搭建这个环境

 

Golang使用Qt库的环境搭建

1. 下载 github.com/therecipe/qt

    备用高速仓库 - https://gitee.com/xuyanhui_halo/qt

    解压

2. mingw64 + qt5.13.0环境包

    https://github.com/therecipe/env_windows_amd64_513

    备用高速仓库 - https://gitee.com/xuyanhui_halo/env_windows_amd64_513

    下载后解压, 修改

    xx\env_windows_amd64_513\5.13.0\mingw73_64\bin\qtenv2.bat 

例如: (注意Path改成你自己编译包放置路径, 注意/\斜杠, 最后bin要/)

@echo off
echo Setting up environment for Qt usage...
set PATH=E:\CodePath\Golang\bin\env_windows_amd64_513\5.13.0\mingw73_64/bin;E:\CodePath\Golang\bin\env_windows_amd64_513\Tools\mingw730_64/bin;%PATH%
echo To export the current PATH to your default CMD or PS env run
echo ------------------------
echo set PATH "%PATH%"
echo ------------------------
echo and re-open the command line window

3. 编译 Qt支持golang工具

    1)  将 2 中mingw bin添加到系统环境中, 为下面编译提供 gcc g++, 关键是后续将go使用Qt库编译时链接的库不会报错

    2) 编译1中解压的源码

$ cd xx\qt\cmd
$ go build ./qtsetup/
$ go build ./qtminimal/
$ go build ./qtdeploy/
$ go build ./qtminimal/
$ go build ./qtrcc/

    编译之后生成, 将他们拷贝放到$GOPATH/bin 目录下即可

      至此环境搭建基本完成

 

Goland上 配置 ui -> golang 和 编译Qt支持的go源码

ui -> go 外部工具配置

Program: E:\CodePath\Golang\bin\goqtuic.exe

Arguments: -go-ui-dir=$FileDir$ -ui-file=$FilePath$

Working directory: $FileDir$

设置编译带Qt支持的Go文件工具

(1) 重新进行编译

Program: E:\CodePath\Golang\bin\qtdeploy.exe

Argument: -qt_dir=E:\CodePath\Golang\bin\env_windows_amd64_513 -qt_version="5.13.0" build desktop $FileName$

Working directory: $FileDir$

 

使用

1. 中编译的代码

main.go

package main

import (
	"github.com/therecipe/qt/widgets"
	"github.com/therecipe/qt/core"
	"os"
	myui "go_with_qt/ui"
)

func main() {
	widget := widgets.NewQApplication(len(os.Args), os.Args)

	mainwindows := widgets.NewQMainWindow(nil, core.Qt__Window) // 创建主窗体
	loginUI := myui.UILoginMainWindow{}
	loginUI.SetupUI(mainwindows) // 将UI初始化给创建的mainwindows
	mainwindows.Show() // 显示

	widget.Exec()
}

2. 使用创建的goland工具编译/命令编译

命令: qtdeploy.exe -qt_dir=E:\CodePath\Golang\bin\env_windows_amd64_513 -qt_version=5.13.0 build desktop main.go

3. 编译之后生成windows 和  deploy目录

其中 deploy\windows 目录下有执行文件,双击运行

问题

time="2020-06-18T20:39:37+08:00" level=error msg="failed to run command" _func=RunCmd cmd="go mod vendor" dir="E:\\Code\\Golang\\go_with_qt\\main.go" env= error="fork/exec C:\\Go\\bin\\go.exe: The directory name is invalid." name="go mod vendor"

解决 go mod vendor , 将依赖拷贝到当前目录中, 再重新编译

 

资源

本例程代码 - https://download.csdn.net/download/halo_hsuh/12533440

                   - 和彩云 http://caiyun.feixin.10086.cn/dl/0r5Csgu39kyu2  提取密码:B3dA

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Golang中使用Qt库(therecipe/qt)+QtDesigner + Goland (一) 环境搭建 的相关文章

  • Oracle 指定字段排序 Oracle自定义排序 Oracle特定字段排序

    Oracle 指定字段排序 Oracle自定义排序 Oracle特定字段排序 一 概述 在项目开发中 xff0c 遇到一个需求大致内容是 xff1a 某个位置的用户 xff0c 优先推荐当地服务 比如 xff1a 在某个城市 xff0c 优
  • Idea Jrebel 报错:Cannot reactivate, offline seat in use ...

    Idea Jrebel 报错 xff1a Cannot reactivate offline seat in use 一 问题描述 在使用idea Jrebel续期的时候 xff0c 修改idea激活服务器地址时 xff0c 遇到报错 xf
  • 阿里云DDNS+iKuai 软路由+证书安装

    一 获取aliyun AccessKey 首先在阿里云买好域名 然后进入控制台打开 AccessKey 进来后会有提醒 xff1a 云账号 AccessKey 是您访问阿里云 API 的密钥 xff0c 具有该账户完全的权限 xff0c 请
  • ffmpeg: 从视频里提取视频帧,并保存为图片文件

    用ffmpeg处理视频时 xff0c 有时需要从视频里提取某个时间的一帧视频数据 xff0c 这时需要用到ffmpeg的一个关键函数 xff0c av seek frame av seek frame原型如下 xff1a span clas
  • 手把手教你用Python分析微信聊天内容

    在开始之前 先简单说下我为何会写这篇文章 为了开发新客户 领导安排公司的客服们加入了很多的微信群 在群内收集目标客户的联系方式 然而她们收集客户信息的方式非常的原始 在微信群内翻看群聊记录 gt 寻找客户发出的电话号码 gt 复制 gt 打
  • ubuntu 环境变量

    一 设置环境变量三种方法 a 临时变量 直接在终端命令框输入 xff1a export PATH 61 PATH usr local arm gcc linaro 4 9 4 2017 01 x86 64 arm linux gnueabi
  • iOS 高德地图路线规划

    最近做了高德地图路线规划 xff0c 把自己不熟的点记录一下 xff1a 1 地图不显示当前位置精准圈 xff1a 设置mapview的 customizeUserLocationAccuracyCircleRepresentation 属
  • 1.点亮1个led程序分析(汇编)

    最终目标 点亮led灯 1 xff1a 通过原理图 xff0c 确定nLED 1的引脚关系 GPF4 2 xff1a 查看S3C2440手册 xff0c 找到控制GPF4引脚的方法 GPFCON 配置寄存器 GPFDAT 数据寄存器 3 x
  • 高效求List差集

    List求差集问题 xff0c 解决思路使用了List的结构特性 先上代码 xff0c 再分析 List list1 61 new LinkedList List list2 61 new LinkedList List list3 61
  • UIImageView 和 UIView的基础使用

    1 UIView 的基本属性 设置位置 UIView view 61 UIView alloc initWithFrame CGRectMake 100 100 100 100 self window addSubview view 设置背
  • MAMP PHP5.6、PHP7.4.20 …… 安装redis、mongodb等扩展

    一 下载php对应版本源码 xff1a https www php net releases 解压后放入 对应版本 下面 Application MAMP bin php php5 6 10 include php 二 下载扩展包 http
  • B-Code For 1 Codeforces 768【递归】 好题!

    题意 xff1a 起初 xff0c 序列中仅有数n if n 61 0 amp amp n 61 1 在原来的位置补充3个元素n 2 n 2 n 2 直至该序列用仅有0和1 现在问区间 l r 有多少个1 思路 xff1a 一开始想用vec
  • AtCoder褐名记

    今年四月份开始参加AtCoder比赛 xff0c 至今参加了9次 在第9次结束后 xff0c 涨了一级 xff0c 从最低级的灰名涨到倒数第二级的褐名 相对于我这样的新手而言 xff0c AtCoder比TopCoder和Codeforce
  • 基于FFmpeg H264 + G711A 音视频裸流合并 MP4文件 ( G711A 转 AAC)

    由于 FFmpeg 只支持H264 43 AAC的mp4封装格式的 xff0c 并不支持H264 43 G711的mp4封装格式 所以需要将G711a转码成AAC格式的 然后封装成mp4文件 xff0c 但网上有说 通过修改movenc c
  • YOLOV3 网络结构学习笔记

    注 xff1a 本文非原创 xff0c 文章内容都是引用以下文章中 xff0c 本文只是记录学习笔记 yolo系列之yolo v3 深度解析 木盏的博客 CSDN博客 yolo3 YOLO v3算法详解 Atlas 的博客 CSDN博客 y
  • 基于人脸特征点实现疲劳检测

    为了有效监测驾驶员是否疲劳驾驶 避免交通事故的发生 提出了一种利用人脸特征点进行实时疲劳驾驶检测的新方法 对驾驶员驾驶时的面部图像进行实时监控 首先检测人脸 并利用ERT算法定位人脸特征点 然后根据人脸眼睛区域的特征点坐标信息计算眼睛纵横比
  • 基于 HPSocket , 实现 socket 通讯

    HPSocket HP Socket 是一套通用的高性能 TCP UDP HTTP 通信框架 xff0c 包含服务端组件 客户端组件和 Agent 组件 xff0c 广泛适用于各种不同应用场景的 TCP UDP HTTP 通信系统 xff0
  • windows 基于 MediaPipe 实现 PoseTracking

    MediaPipe是用于构建跨平台多模态应用ML管道的框架 xff0c 其包括快速ML推理 xff0c 经典计算机视觉和媒体内容处理 xff08 如视频解码 xff09 在2019年6月举行的CVPR大会 xff0c MeidaPipe正式
  • windows 基于 MediaPipe 实现 HandTracking

    OverView 感知手的形状和运动的能力可能是改善跨各种技术领域和平台的用户体验的重要组成部分 例如 xff0c 它可以构成手语理解和手势控制的基础 xff0c 还可以在增强现实中将数字内容和信息叠加在物理世界之上 虽然对人们来说很自然
  • DeepStream 部署 RTSP + scaled-yolov4 (tensorrtx)

    DeepStream应用程序将深度神经网络和其他复杂的处理任务引入到流处理管道中 xff0c 以实现对视频和其他传感器数据的近实时分析 从这些传感器中提取有意义的见解为提高运营效率和安全性创造了机会 例如 xff0c 摄像头是当前使用最多的

随机推荐

  • DeepStream 多路拉取RTSP视频流

    上一篇介绍DeepStream 如何集成Yolov4模型 xff0c 那么本篇介绍下如何实现读取多路RTSP 代码 主要代码参考 https github com belarbi2733 deepstream rtspsrc yolo详细代
  • 编码格式(关于utf-8,gb2312,gbk,big5等)

    计算机数据是以二进制的方式来存储 xff0c 符号代表文字 那么二进制数据表示的模式就是编码 xff0c 跟电报的加密解密是一个道理 xff0c 那么如何将这些数据转化成有效字符 xff0c 这就涉及到了编码格式 xff0c 一般常见的编码
  • Ubuntu配置桥接网络

    第一步 xff1a 点击虚拟机 xff0c 点击设置 第二步 xff1a 点击网络适配器 xff0c 选中桥接模式并确定 第三步 xff1a 点击编辑 xff0c 打开虚拟网络编辑器 xff0c 选中桥接模式 点击 网络属性 找到描述 xf
  • 基于 NCNN, 实现 yolov8

    记录下 基于 ncnn 实现 yolov8 的全部过程 修改 ultralytics nn modules py class Detect forward 和 class C2f forward span class token keywo
  • HRNet 训练自定义数据集

    基于 HRNet 训练人脸特征点数据集 INSTALL conda create n openmmlab span class token assign left variable python span span class token
  • Chatgpt 指令收集

    在使用 ChatGPT 时 xff0c 当你给的指令越精确 xff0c 它的回答会越到位 xff0c 举例来说 xff0c 假如你要请它帮忙写文案 xff0c 如果没给予指定情境与对象 xff0c 它会不知道该如何回答的更加准确 一 写报告
  • openEuler 安装图形桌面环境Gnome或DDE或UKUI

    由于openEuler系统主要针对服务器 xff0c 目前默认安装之后没有图形桌面环境 xff0c 需要的用户可以自己手动安装配置 这里推荐安装深度桌面DDE或优麒麟UKUI环境 安装gnome桌面 sudo dnf makecache s
  • Ubuntu更换国内镜像源

    由于Ubuntu官方镜像速度有限 xff0c 可以使用国内镜像加速更新和下载 xff0c 节约时间 常用的国内镜像有很多 xff0c 本人常用的有如下几个 xff0c 仅供参考 163镜像 mirrors 163 com 清华镜像 mirr
  • ubuntu-2204 gerrit ssh 报错Permission denied (publickey).分析及解决

    ubuntu 2204 gerrit ssh 报错Permission denied publickey 分析及解决 使用repo init sync下载代码时遇到报错 Permission denied publickey 分析排查步骤
  • 消息序列化工具-protobuf介绍及安装使用技巧

    简介 protobuf是google团队开发的用于高效存储和读取结构化数据的工具 xml json也可以用来存储此类结构化数据 xff0c 但是使用protobuf表示的数据能更加高效 xff0c 并且将数据压缩得更小 xff0c 大约是j
  • 消息序列化工具-为现代C++设计的jsoncpp介绍与使用技巧

    概述 JSON 的全称为 xff1a JavaScript Object Notation xff0c 顾名思义 xff0c JSON 是用于标记 Javascript 对象的 xff0c JSON 官方的解释为 xff1a JSON 是一
  • cppcheck代码检查工具安装与使用技巧

    cppcheck代码检查工具安装与使用技巧 Cppcheck 是一种 C C 43 43 代码缺陷静态检查工具 不同于 C C 43 43 编译器及很多其它分析工具 xff0c 它不检查代码中的语法错误 Cppcheck 可以检查非标准代码
  • sed流编辑器中使用变量替换以及执行外部命令

    在使用sed对日志或者其它文本进行parse的过程当中 xff0c 有时候我们需要引用外部变量的值 xff0c 或者获取一个shell命令执行的结果 xff0c 以便达到更加可观的输出结果 这里介绍如何做到 sed 流编辑 1 sed命令及
  • (计蒜客) 取石子游戏 (gcd算法灵活运用)

    蒜头君和花椰妹在玩一个游戏 xff0c 他们在地上将 n 颗石子排成一排 xff0c 编号为 1 到 n 开始时 xff0c 蒜头君随机取出了 2 颗石子扔掉 xff0c 假设蒜头君取出的 2 颗石子的编号为 a b 游戏规则如下 xff0
  • mkisofs命令制作iso文件

    mkisofs命令行格式 mkisofs adDfhJlLNrRTvz print size quiet A lt 应用程序ID gt b lt 开机映像文件 gt c lt 开机文件名称 gt hide lt 目录或文件名 gt hide
  • windows下tree命令列出文件目录树

    windows下tree命令列出文件目录树 tree path f tree D AR C Team f 可以将D AR C Team目录下所有目录及子目录下的文件都打印出来 tree D AR C Team f gt HOMEPATH f
  • yum命令安装历史回滚彻底删除安装的依赖包

    yum命令安装一个软件包是会连同依赖包一起安装 xff0c 但是yum remove卸载时却只卸载这个文件包本身 如果需要删除安装时附加的依赖包可以使用yum history的相关操作实现回滚 假如安装了ecliipse pde xff0c
  • latex在ipython jupyter notebook中的使用

    In 2 from IPython display import Latex In 5 数学公式的前后要加上 或 和 Latex r 34 f x 61 3x 43 7 34 Out 5 In 6
  • wsl 镜像迁移

    wsl 镜像迁移 1 打开CMD xff0c 查看所有WSL wsl l all v NAME STATE VERSION Ubuntu 20 04 Stopped 2 centos Running 2 2 导出WSL wsl export
  • Golang中使用Qt库(therecipe/qt)+QtDesigner + Goland (一) 环境搭建

    Note 开启模块支持 xff0c 设置国内高速代理 xff0c 参考 https www jianshu com p d782d70b3a25 简介 搭建的目的只是刚好看到有这么一个模块 xff0c 还有给使用Go的人需要用到调试界面的时