Qt在不同平台上的安装

2023-05-16

Qt在不同平台上的安装

  • 来源 | 愿码(ChainDesk.CN)内容编辑
  • 愿码Slogan | 连接每个程序员的故事
  • 网站 | http://chaindesk.cn
  • 愿码愿景 | 打造全学科IT系统免费课程,助力小白用户、初级工程师0成本免费系统学习、低成本进阶,帮助BAT一线资深工程师成长并利用自身优势创造睡后收入。
  • 官方公众号 | 愿码 | 愿码服务号 | 区块链部落
  • 免费加入愿码全思维工程师社群 | 任一公众号回复“愿码”两个字获取入群二维码

本文阅读时长:9min

Qt为移动和嵌入式设备提供了不同的外观,用户期望不同的演示风格。这是在框架内控制的,因此开发人员可以专注于开发单个应用程序。

Qt框架在两个独立的发行版中发布,一个是商业版,一个是开源版(称为双重许可版)。通过这种方式,他们可以免费支持开源兼容的应用程序,同时为封闭源商业项目提供不受限制的使用。在2000年之前(2.2版本发布),免费分发的源代码已经获得了各种许可证,一些团体认为这些许可证与常见的开源计划不兼容。对于2.2版本,它被改为GPL许可,这解决了对该集团对真正的开源自由的承诺的任何担忧。2007年,Qt 4.5发布,他们将LGPL作为选择,为喜欢更宽松许可的开发人员提供选择。

开始使用therecipe / qt


为了开始我们对Qt的探索和对Go的绑定,我们将构建一个简单的hello world 应用程序。为了能够这样做,我们首先需要安装therecipe / qt,这取决于我们必须首先设置的各种先决条件。与Go-GTK一样,我们将依赖本机库,这需要我们设置CGo功能并安装适合当前平台的Qt库。

准备CGo


Qt Go绑定需要CGo的存在才能使用本机库。在完整的开发系统上,可能已经建立了这个系统。

安装Qt


Qt网站提供各种安装方法,包括任何拥有Qt帐户(可以免费注册)的人都可以使用的定制在线安装程序。通常,Qt安装附带Qt Creator(项目IDE),GUI设计器,其他工具和示例。访问上一个站点将自动检测您的系统并建议最合适的下载(这通常是最佳选择)。

请注意,Qt安装可能非常大。如果硬盘驱动器上没有至少40 GB的空间,则需要在安装前留出一点空间。

一些操作系统提供Qt库和工具作为其包管理器的一部分,它通常提供更轻量级的安装,它将自动保持最新。

在多个平台上安装Qt


苹果系统

在Apple macOS上,安装的最佳方法是使用Qt下载站点上提供的安装程序。下载macOS安装程序。下载后,打开包并在里面运行程序; 这将安装选定的编译器,工具和支持应用程序。如果在安装过程中遇到任何错误,第一步是检查Xcode安装是否完整且是最新的。

视窗

在Windows上安装比我们看到的其他一些工具包更简单,因为Qt安装程序有一个mingw捆绑包来设置大多数编译要求(尽管仍然建议为绑定阶段设置自己的编译器)下一个。要安装它,请转到前面列出的下载页面并访问Windows安装程序。运行下载的可执行文件,然后按照屏幕上的说明进 建议安装到默认位置。完成后,您就可以设置绑定了。

Linux

使用Qt网站上的在线安装程序是最简单的方法,虽然可以通过系统的包管理器进行安装(如果你想尝试包管理器方法,那么首先阅读Qt文档)。在大多数平台上,Qt下载网站将正确检测平台并提供简单的运行安装程序。下载文件后,您应该使其可执行,然后运行它:

在Linux上,您需要使安装文件可执行并运行它

这将像在macOS上一样启动安装程序,从这里,按照屏幕上的说明操作并完成安装。

许可证/ Qt帐户

当涉及到登录屏幕时,如果您有,请输入您的Qt帐户详细信息。如果您有资格获得他们的开源许可证(GPL或LGPL),您可以跳过此步骤,确保电子邮件和密码字段为空。

安装qt(绑定)


要使用qt(Go Qt绑定),我们需要下载项目及其依赖项,然后运行安装脚本来配置和编译库。如果使用Windows,建议使用MSYS2终端。

如果您将Qt下载安装到默认位置以外的任何位置,请确保将QT_DIR环境变量设置为您选择的位置。

首先,应该使用go工具,运行go get和安装库及其依赖项go get。

下载完成后,我们需要运行qtsetupqt项目中包含的工具; 所以,在cmd/qtsetup文件夹中,执行go run main.go。使用Linux终端:

为therecipe / qt绑定执行qtsetup脚本

此过程完成后,绑定应该可以使用了。如果您遇到错误,那可能是因为Qt工具未正确安装或位置已自定义且您忘记设置QT_DIR环境变量。

建立


要使用Go构建我们的第一个qt应用程序,让我们创建另一个Hello World 应用程序。与前面的示例一样,我们将在单个应用程序窗口中使用简单的垂直框布局。以下代码应足以加载您的第一个应用程序:

package main
import (
"os"

"github.com/therecipe/qt/widgets"
)

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

window := widgets.NewQMainWindow(nil, 0)
window.SetWindowTitle("Hello World")

widget := widgets.NewQWidget(window, 0)
widget.SetLayout(widgets.NewQVBoxLayout())
window.SetCentralWidget(widget)

label := widgets.NewQLabel2("Hello World!", window, 0)
widget.Layout().AddWidget(label)

button := widgets.NewQPushButton2("Quit", window)
button.ConnectClicked(func(bool) {
app.QuitDefault()
})
widget.Layout().AddWidget(button)

window.Show()
widgets.QApplication_Exec()
}

让我们从这段代码片段中注意一些细节。每个窗口小部件构造函数都采用(通常)两个参数,每个参数都是父窗口小部件和flags参数。传入的其他类型通常会在这些值之前添加,并在函数名称中包含附加参数的注释。例如, widgets.NewQLabel2(title, parent, flags)相当于widgets.NewQLabel(parent, flags).SetTitle(title)。此外,您将看到布局应用于新的widgets.QWidget直通SetLayout(layout),并通过设置为窗口内容window.SetCentralWidget(widget)。

要加载显示并运行应用程序,我们调用window.Show()然后widgets.QApplication_Exec()。此文件以通常的方式构建 go build hello.go:

尽管输出文件相当大,但构建很简单

由于Qt框架的大小,构建的文件非常大。在针对特定分发进行包装时,这将显着降低。

运行


构建阶段的输出是一个二进制文件,可以在命令行上或通过双击文件管理器在当前计算机上执行。另外,您可以直接执行它 - 无论go run hello.go哪种方式,您应该看到一个简单的窗口,如下所示:

qt Hello on Linux

在macOS上运行

在此阶段,二进制文件可以在具有安装Qt的相同体系结构的计算机上执行。

对象模型和事件处理


Qt框架是使用C++语言编写的 ,并且以前用C++编码的人很熟悉它的大部分架构。值得注意的是,Go不是一种完整的面向对象语言,因此不能直接匹配这些功能。特别是,我们应该看一下继承,因为它对Qt对象模型很重要。

继承

Qt API是一个完全面向对象的模型,它大量使用了继承模型。虽然Go并不真正支持传统方式的面向对象继承,但它的组合方法非常强大,并且在其位置上运行良好。结果意味着您可能不会注意到差异!

内存管理

正如您在前面的示例中已经注意到的,每个窗口小部件都希望将父窗口传递给构造函数。这使得Qt框架能够在移除窗口小部件树时处理整理和释放内存。QObject(这是所有Qt API的基础对象)跟踪其子对象,因此,在删除时,也可以删除其子对象。这使得复杂窗口小部件层次结构的创建和删除更容易正确处理。要使用此功能,您应该始终记住将父对象传递给窗口小部件的构造函数(以函数开头的Go函数New…),尽管传递nil可能看起来像是在工作。

信号和插槽


Qt类似于GTK +,这是一个事件驱动的框架,广泛使用信号来处理事件管理和数据通信。在Qt中,这个概念分为信号和插槽; 信号是事件发生时产生的信号,信号是接收信号的信号。设置插槽以接收信号的动作称为连接,这导致在调用其连接信号时调用插槽功能。在Qt中,这些是类型化事件,意味着每个信号都有一个与之关联的类型参数列表。定义信号时,此类型已设置,并且任何希望连接到信号的插槽都需要具有相同的类型。

s.ConnectMySignal(
   func(msg string) {
      log.Println("Signalled message", msg)
   }
)

信号和插槽是Qt Designer生成的高级用户界面,是处理多线程应用程序的推荐方法。信号可以从后台线程触发,并且用户接口代码可以将该信号连接到其自己的插槽,实质上是监听信号。当信号触发时,任何相关数据(信号参数)将从一个线程传递到另一个线程,因此可以在GUI更新中安全使用。

由于Qt是对Qt API的轻量级绑定,因此特定于Go的文档很少,但您可以在Qt的博客文章中找到有关Qt设计和官方文档中提供的所有类的更多信息。

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

Qt在不同平台上的安装 的相关文章

  • PHP7使用MongoDB\Driver\Manager类实现增删改查

    这篇笔记记录了PHP7使用官方扩展MongoDB Driver提供的Manager BulkWrite Query Cursor WriteResult类实现增删改查的过程 相关笔记 xff1a CentOS6 9安装mongodb和php
  • 牛妹爱数列_牛客练习赛67

    题目链接 xff1a https ac nowcoder com acm contest 6885 D 题意 给你一个长度为n的仅包含01的序列a xff0c 并执行以下操作单点修改 xff1a 0 gt 1 xff0c 1 gt 0前缀修
  • C++11 thread类在windows上无法使用。std 没有成员 thread、thread not member of std

    C 43 43 11 thread类在windows上无法使用 std 没有成员 thread thread not member of std 解决方法 使用C 43 43 11其他特性完全没问题 这个问题原因是MinGW GCC当前仍缺
  • nginx编译安装常见报错

    编译nginx root 64 iZgt88z6l1kvd7Z nginx 1 10 1 configure prefix 61 usr local nginx with http ssl module with pcre 61 pcre
  • 【万人千题】C语言矩阵的转置12.4总结

    目录 一 xff1a 知识点 1 xff0c 概念 二 xff1a 应用 1 xff0c 另开一个数组来存放转置内容 xff08 row和col不等的情况 xff09 2 xff0c n阶矩阵 xff08 row与col相等的情况 xff0
  • MarkDown--- 让CSDN的博客更炫丽,添加小图标,调整字体大小和颜色

    MarkDown 让CSDN的博客更炫丽 xff0c 添加小图标 xff0c 调整字体大小和颜色 1 Icon2 Font3 Color4 Gif1 Animal2 ColorBall3 cartoon4 Beautiful5 JumpSh
  • 手把手教你linux如何挂载磁盘,进行扩容

    Linux挂载磁盘 xff0c 进行扩容 1 检查新磁盘并设定1 1 检查新磁盘1 2 建立PV1 3 建立VG1 4 建立LV 2 挂载2 1 挂载到新目录2 2 挂载到根目录 3 移除3 1 移除挂载关系3 2 Remove VG3 3
  • VMware安装Win11+WSA子系统和使用教程

    VMware安装Win11 43 WSA子系统和使用教程 作者 xff1a Sna1lGo 时间 xff1a 2022 9 29 下载相关文件 xff1a Win11镜像 xff1a Download Windows 11 microsof
  • 计算机网络_以太网帧中的前导码和帧间隙

    以太网帧长中的前导码和帧间隙 1 概述 目前出现三个bug都涉及到L1和L2限速不准确的问题 xff1a 在计算网络带宽时 xff0c 报文设置的越小 xff0c 差距就越大 这个问题几乎所有新手都会遇到 xff0c 在此梳理一下 xff0
  • 初识Nginx和环境准备

    初识Nginx和环境准备 Nginx的优点Nginx的环境搭建开始搭建Nginx环境 Nginx的优点 支持海量的高并发 xff1a 采用IO多路复用epoll 官方测试Nginx能够支持5万并发链接 xff0c 实际生产环境中可以支撑2
  • vim的vimrc配置

    windows 34 modified by Neoh set helplang 61 cn 34 使用中文帮助文档 set encoding 61 utf 8 34 查看utf 8格式的帮助文档 set fileencodings 61
  • C++线程同步——阻塞线程的方法

    一般 xff0c 使线程阻塞我们可以使用 while condition for condition 等循环条件使之线程内语句执行在循环处无法向下继续执行 xff0c 但这样并不是真正意义上的线程阻塞 xff0c 当前线程仍然在执行 xff
  • 利用爬虫爬取游戏网站图片和信息并生成词云图

    一 项目简介 1 1 本项目博客地址 xff1a 1 2 项目完成的功能与特色 功能 xff1a 爬取目标游戏网站的皮肤图片及信息并用爬取的信息生成词云图 特色 xff1a 将爬取的信息做简单的处理 xff0c 并将爬取的图片直接保存在文件
  • Debian搭建FTP服务器及Caddy网站并上传

    Debian搭建FTP服务器及Caddy网站并上传 安装配置FTP1 安装2 查看网络服务状态3 配置vsftpd 安装配置Caddy1 安装Caddy2 配置Caddy 上传网站到服务器疑难解决 参考 安装配置FTP 首先用SSH方式连接
  • linux 软件安装

    linux 软件安装 yum xff1a 软件包管理工具 命令格式 xff1a yum options command command 列表 List of Commands check 检查 RPM 数据库问题 check update
  • POJ2823 滑动窗口 (单调队列)

    题目 来学习一下单调队列 xff1a 他只可以从队尾入队 xff0c 但可以从队尾或队首出队 xff0c 来维护队列的单调性 单调队列有两种单调性 xff1a 元素的值单调和元素的下标单调 单调队列可以用来优化DP 状态转移方程形如dp i
  • docker swarm 使用说明

    docker swarm 使用说明 swarm 命令 xff1a 管理集群 docker swarm command root 64 centos docker swarm help Usage docker swarm COMMAND M
  • SQL处理json数据

    通过sql语句提取json字符串中的数据 1 示例数据 CREATE TABLE 96 json test 96 96 id 96 int NOT NULL COMMENT 39 主键ID 39 96 json str 96 longtex
  • 【一步到位】sublime 配置C/C++环境

    sublime 配置C 43 43 环境 1 找到MinGW64 bin路径2 配置环境变量3 sublime新建Build System4 运行 1 找到MinGW64 bin路径 复制完整路径 2 配置环境变量 xff08 1 xff0
  • docker mysql8使用SSL及使用openssl生成自定义证书

    docker安装MySQL8 修改my cnf vi span class token operator span docker data mysql conf my span class token punctuation span cn

随机推荐

  • springboot连接MySQL使用SSL证书

    安装java jdk 检查是否已安装JDK yum list installed span class token operator span span class token function grep span span class t
  • HTML(五):图片、超链接

    图片 一 图片标签 日常浏览网页中 xff0c 在一个页面中会有文字 图片 音频等等 xff0c 一般一个页面想要获取更多流量 xff0c 一般通过 图文并茂 这一维度进行挖掘 在HTML中 xff0c 使用img标签来表达显示一张图片 对
  • Maven打包提示dependencies.dependency.systemPath错误

    Maven打包提示dependencies dependency systemPath错误 具体信息如下 xff1a Some problems were encountered span class token keyword while
  • macbook桌面的文件突然消失的解决方案

    macos系统的的桌面文件突然间消失的解决方案 原因 有一天就突然发现我电脑桌面上的文件突然就不见了 xff0c 但是commad 43 空格键唤醒聚焦搜索 xff0c 搜索文件又能够找到我所消失的文件 xff0c 并且如果把原有的文件再一
  • 【cmake】搭配vcpkg的manifest模式实现自动安装第三方库

    cmake搭配vcpkg的manifest模式实现自动安装包 好处 类似于pip的requirements 你只需要指定该项目的依赖库 xff0c 就会自动运行vcpkg为你安装所有的依赖库 并且安装在当前项目build下面 这些第三方库与
  • python安装surprise库总是失败

    python安装surprise库缺乏组件的解决办法 1 背景 xff1a 2 明确问题3 找到资源包4 问题解决5 总结 1 背景 xff1a 在做一个用到django框架做音乐的推荐时 xff0c 由于要用到SVD算法 xff0c 需要
  • 通讯网络

    题面 Description 北极的某区域共有n座村庄 xff0c 每座村庄的坐标用一对整数 x y 表示 为了加强联系 xff0c 决定在村庄之间建立通讯网络 通讯工具可以是无线电收发机 xff0c 也可以是卫星设备 所有的村庄都可以拥有
  • Linux主机密码暴力破解

    一 目的 针对Linux主机SSH协议暴力破解过程以及漏洞原理和修复方式详细介绍 二 漏洞介绍 2 1 漏洞原因 由于主机用户没有设置密码或者设置了linux弱密码 xff0c 且未对主机设置严格的基线加固策略 xff0c 导致恶意攻击者可
  • CCF CSP认证201809-3 元素选择器

    201809 3 元素选择器 题目 思路 多级查询需要用到树形结构 xff0c 详见代码 AC代码如下 span class token macro property span class token directive keyword i
  • Week 11 必做题

    文章目录 11 1题目描述样例思路代码11 2题目描述样例思路代码11 3题目描述样例思路代码11 4题目描述样例思路代码 11 1题目描述 蒜头君从现在开始工作 xff0c 年薪 N 万 他希望在蒜厂附近买一套 60平米的房子 xff0c
  • Linux生成随机密码

    使用SHA算法来加密日期 xff0c 并输出结果的前10个字符 xff1a date span class token operator 43 span span class token operator span s span class
  • mac环境,安装anaconda,终端输入conda无效解决

    正常从官网下载安装包安装后 xff0c 打开终端 xff0c 配置conda环境变量 打开终端 xff0c 输入 vim bash profile 出现问题1 原因是 xff1a 存在了同名的文件 xff0c 但是这个同名的文件格式不一样
  • 前端实现一键复制,且不弹出软键盘

    前端实现一键复制 xff0c 且不弹出软键盘 直接上代码 直接上代码 span class token keyword function span span class token function downloadImg span spa
  • 【干货】阿里云ECS设置的安全组没有生效的解决方法

    问题描述 在ECS管理控制中设置对应端口的安全组规则 xff0c 但是未生效 问题原因 安全组配置错误 xff0c 导致规则未生效 解决方案 具体的解决方法请查看 xff1a https help aliyun com knowledge
  • 【干货】阿里云ECS安全组没有生效的解决办法

    解决方法 设置了ECS实例的安全组 xff0c 但是安全组没有生效 xff0c 可能是安全组配置错误 xff0c 所以没生效 xff0c 具体的解决方法请查看 xff1a https help aliyun com knowledge de
  • 使用ssl双向验证登录mysql

    1 检查服务端是否开启ssl认证 show variables like 39 ssl 39 2 确认用户强制使用ssl认证 use mysql username换成具体的用户 select ssl type from user where
  • Go-Qt5开发之Windows10安装配置(1)

    Go Qt5开发之Windows10安装配置 开发环境安装Qt xff0c 两种方式 xff08 这里采用官方版本方式 xff09 xff1a MSYS2 安装MSYS2介绍MSYS2是什么编辑安装更换国内源教程更换内容 通过以下命令来更新
  • Manjaro 常用软件安装

    Manjaro 常用软件安装 修改Home下的目录为英文 修改系统语言archlinuxcn keyringvimAUR浏览器谷歌浏览器 chrome火狐浏览器 Firefox360浏览器 360压缩搜狗拼音 JDK 安装中文字体仿制mac
  • 利用python实现本地文件上传到sftp

    实现功能 xff1a 利用python自动连接sftp xff0c 并实现本地文件 xff08 文件夹 xff09 自动上传到远程sftp服务中指定路径下 xff0c 且保持本地目录结构 系统环境 xff1a centos7 python版
  • Qt在不同平台上的安装

    Qt在不同平台上的安装 来源 愿码 ChainDesk CN 内容编辑愿码Slogan 连接每个程序员的故事网站 http chaindesk cn愿码愿景 打造全学科IT系统免费课程 xff0c 助力小白用户 初级工程师0成本免费系统学习