,转载 https://blog.csdn.net/lanbery/article/details/81745611

如果你是一个墨守成规的coding,请移步其他内容,这部分内容可能不适合你。如果你希望到外面看看,感受新鲜的技术以及自由自在的氛围,请继续。当然你也要付出一定的精力去学习如何FQ,因为很多知识需要跳一跳出去看看(其实外面的世界还是很精彩的)。好了,废话不说了,进入正题。

Qt是什么?

QT是一个跨平台的C++应用程序开发框架。广泛用于开发GUI程序,这种情况下又被称为部件工具箱。也可用于开发非GUI程序,比如控制台工具和服务器。Qt使用于OPIE、Skype、VLC media player、Adobe Photoshop Elements、VirtualBox与Mathematica以及被Autodesk、欧洲空间局、梦工厂、Google、HP、KDE、卢卡斯影业、西门子公司、沃尔沃集团, 华特迪士尼动画制作公司、三星集团、飞利浦、Panasonic 所使用。

它是Digia公司的产品。Qt使用标准的C++和特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏。通过语言绑定,其他的编程语言也可以使用Qt。

以上摘自维基百科。

2008年,Qt Company科技曾经被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具,所有不知道有人是否还记得当初Nokia曾经推出过一款手机同步软件,一坨绿的能够同步通讯录、发信息等等功能就是基于Qt这货开发的,Nokia甚至连开发工具的风格都是在那个阶段定型的。

使用Qt开发的软件,相同的代码可以在任何支持的平台上编译与运行,而不需要修改源代码。会自动依平台的不同,表现平台特有的图形界面风格。这是Qt最大的特点,同时这也是导致Qt的安装文件高达2.7GB的原因。

想了解更多请穿越Qt官网

Qt 模块结构

QT+ Golang开发环境

window下搭建Qt + Go 开发环境需要做以下工作:

  1. Golang安装,参见Golang官网

  2. 配置Go环境变量:GOROOT(Golang安装路径)和GOPATH(go项目工作区)

  3. 安装Qt,两种方式(这里采用MSYS2方式):

    • 官方版本安装

    • MSYS2 安装

  4. 获取Qt go语言支持package: github.com/therecipe/qt

  5. 运行setup

Go 安装与环境变量设置

golang安装,各位可以百度,教程很多,这里不详细讲解。重点介绍一下window Go环境变量GOROOT和GOPATH。GOROOT 配置你go所安装的目录,GOPATH 配置你将来要编写go项目的根目录,顺便介绍一下go项目的目录结构。

Golang项目目录下一般有三个子目录

  • src 存放源码

    • package A

      • a1.go

        • AA

          • aa1.go

    • package B

      • b1.go

      • b2.go

      • main.go

  • pkg 编译后生成的文件

  • bin 编译后生成的可执行文件

-----------------------------------------------------------------------------------------------

以上是golang项目的目录结构,golang不像java项目那种组织方式,java中每个项目都有src、resource、lib、target\classes...等等
而golang则是把每个项目的生成的可执行文件同一放到工作区(即GOPATH\bin)bin下.配置环境变量时注意这一点就可以了,不然在编译项目时查找编译结果也比较麻烦了。
上面的src不仅有你编写的Golang代码,同时还有你代码依赖其他项目的源码(下图是我本地代码库)。

GOPATH目录结构

MSYS2安装

安装MSYS2前,简单介绍一下MSYS2。MSYS2是MinGW的子项目,MinGW (Minimalist GNU for Windows)又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。

  • 下载MSYS2

  • 安装MSYS2,官网有详细的安装步骤说明。这里提示一下,你的安装路径最好安装在有足够剩余空间的盘符目录下,因为后续所有基于MSYS2文件个安装都会在这个根目录下。

  • 配置环境变量QT_MSYS2_DIR=%MSYS Home%/msys64

  • Open a MinGW shell 

  • pacman -Syyu 更新MinGW

  • 安装Qt动态发布链接库: pacman -S mingw-w64-x86_64-qt-creator mingw-w64-x86_64-qt5

  • 安装Qt静态链接库:pacman -S mingw-w64-x86_64-qt-creator mingw-w64-x86_64-qt5-static

  • pacman -Scc 清理安装包

  • 设置和部署 export QT_MSYS2_ARCH=amd64

获取Qt go语言支持package

获取Qt 资源包:在cmd命令窗口执行 go get -v github.com/therecipe/qt/cmd/...

qtsetup

上面操作都完成后,你的GOPATH/bin下应该多出:qtdeploy.exe,qtrcc.exe,qtsetup.exe等等可执行文件。执行qtsetup.exe[就可以安装了。注意:时间比较长,网络可能需要出国]

QT +go 开发 GUI程序的更多相关文章

  1. ROS:使用Qt Creator创建GUI程序(一)

    开发环境: Ubuntu14.04 ROS indigo version Qt Creator 3.0.1 based on Qt 5.2.1 步骤如下:(按照下面命令一步步来,亲测可行) (一)安装 ...

  2. 笔记: c开发gui程序 (WM_CREATE, WS_CLIPCHILDREN , SetWindowPos)

    过去两年,用c写的gui程序我一般使用的套路是: 在 winMain()中, 先创建一个主窗口, 紧接着就是在下面创建子窗口(子控件). 可能是因为写这方面的程序较少,所以也没遇到什么大问题,之前就是 ...

  3. 〖Linux〗Qt+gsoap开发客户端程序,服务端地址设定的字符串转换处理

    之所以写出来,是由于经常因为这个问题屡屡丢面子.. 一般情况下,QString转换成(char*),我们一般直接使用: char *str = qstr->text().toLatin1().d ...

  4. Qt Creator开发的程序提升到管理员权限运行

    一些功能需要管理员权限,例如启动一个服务,这就需要exe在管理员权限下运行,一个方法是在exe上右键,选择“以管理员身份运行”,或者右键-属性-兼容性-勾选“以管理员身份运行此程序” 另一个方法是在程 ...

  5. 树莓派入门教程——使用Qt开发界面程序

    前言        Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特 ...

  6. 客户端GUI程序开发漫谈

    这篇文章包含了这个领域的很多开源项目的介绍,还有我多年来的心血和汗水  去年夏天的时候,我用QT做了一个小工具 后来还用QT做了流程设计器 我把程序分享给飞扬青云之后,他甚至搞出来一套QT的皮肤来 说 ...

  7. atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform

    atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform 1. Absoluti 布局(经常使用) 1 2. ...

  8. Qt官方开发环境生成的exe发布方式--使用windeployqt(windeployqt是单独的程序,放在低版本qt4目录下也可以运行的)

    Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行.因此 Qt 官方开发环境里自带了一个 ...

  9. Qt跨平台开发Wince5.0和Android程序

    所谓跨平台是指维护一份代码,可编译出多平台的应用程序.Qt这方面虽然已经做的不错,但性能还是体验,和原生开发工具开发的程序相比,差距还是不小的.但单从生产应用的角度来说,可以采用,不失为一种好的解决方 ...

随机推荐

  1. js调用ajax案例2,使用ok

    XMLHttpRequest 是 AJAX 的基础. XMLHttpRequest 对象所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject) ...

  2. Ftp上传的方法

    using System;using System.Collections.Generic;using System.IO;using System.Net;using System.Text; na ...

  3. Confluence 6 使用 Fail2Ban 来限制登录尝试

    什么是 Fail2Ban? 我们需要在我们网站中防止密码的暴利破解.Fail2Ban 是一个 Python 的应用来查看日志文件,使用的是正则表达式,同时还可以与Shorewall (或者 iptab ...

  4. html 之表单,div标签等。。。。。。。

    一.表单 功能:表单用于向服务器传输数据,从而实现用户与Web服务器的交互 表单能够包含input系列标签,比如文本字段.复选框.单选框.提交按钮等等. 表单还可以包含textarea.select. ...

  5. VGG-Net

    论文下载 源码GitHub 目的 这篇文章是以比赛为目的——解决ImageNet中的1000类图像分类和定位问题.在此过程中,作者做了六组实验,对应6个不同的网络模型,这六个网络深度逐渐递增的同时,也 ...

  6. HTML中body元素的属性

    body元素的属性 属性 描述 text 设定页面文字颜色 bgcolor 设定页面背景颜色 background 设定页面背景图像 bgproperties 设定页面的背景图像为固定状态(不随页面的 ...

  7. Linux系统下目录的权限意义

    访问者及其基本权限 Linux系统内的文件访问者有三种身份,分别是: a) 文件和文件目录的所有者: u---User(所有权);b) 文件和文件目录的所有者所在的组的用户: g---Group;c) ...

  8. rpm 命令使用 和 lsof -p 1406 使用

    #安装RPM -v 显示详细信息 -h 显示进度 -i 安装 -U 升级 -q 查询 -ql 查看rpm 包装的文件 - qf 查看命令属于哪个RPM 包 -qi 查看RPM包的详细信息 [root@ ...

  9. asp.net core 缓存和Session

    缓存 缓存在内存中 ASP.NET Core 使用 IMemoryCache内存中缓存是使用依赖关系注入从应用中引用的服务. 请在ConfigureServices中调用AddMemoryCache( ...

  10. 微信支付JSAPI掉不起来支付按钮是什么原因?(原创)

    两种可能: 1.支付页面的js参数有问题 2.微信支付的配置有问题,大概率在微信支付授权目录是否有填写正确