Qt入门(一)Qt概述

Qt是什么?

在这里插入图片描述

Qt是一个跨平台应用开发框架。
Qt既包括了一系列的Qt库,还包括诸多配套的开发工具如QtCreater,GUI Designer。Qt本身是由C++开发的,但是也提供了其他编程语言的接口。

Qt的定位以及同类

学一种技术,最重要的是找到这个技术在计算机中的定位,这样才能更好地把技术融入到自己的技术栈中,否则就会学一门忘一门。还要找打这门技术所在定位的同类,否则只会局限于这门技术本身,无法扩展,也无法从API中抽身出来真正理解这个定位的技术所需要的共通性的知识以及设计方案。

Qt的定位是一个跨平台的GUI开发框架。
所谓GUI开发,主要工作就是:

  • 响应用户操作。
  • 设计交互界面。
    要完成这些工作有以下方式:
  • 使用操作系统的图形学API以及事件响应API,称为native app,代表选手Qt。这种方案的优点是性能高,占用小。
  • 在里面封装一个浏览内核,直接把应用做成自带浏览器的网页,称为web app,代表选手有electron。这种方案的优点是开发方便快捷。
  • 还有一种折中路线hybrid app,既有用到web开发,又有用到操作系统API。

经典笑话:你的电脑里装了几个浏览器内核:
在这里插入图片描述

所以GUI开发框架做的事情其实就是绑定一些回调函数,然后操控更底层的图形学API进行界面更新。
得知这一点后很容易找到Qt的同类:

  • Native UI开发框架:
    • C++:Qt, WxWidget、GTK、 FLTK、 DearImGUI、Nuklear、duilib、C++ Builder、MFC、EasyX
    • Python: PyQt、WxPython、PyGTK、PyFLTK、DearPyGUI、Tkinter、PyGame
    • C#: WPF、WinForm
    • Java:Swing、JavaFx
  • web UI开发框架:
    • electron

Qt调用什么?

它需要调用的是操作系统的图形学API以实现界面更新,如:OpenGL,Vulkan等
在这里插入图片描述

还需要从操作系统获取用户的操作,键盘输入,鼠标按动等,这里就需要区分不同操作系统了,要知道,裸操作系统是没有桌面的,自然更谈不上什么鼠标了,操作系统和桌面系统是分开的【至少Linux是这样的】,

  • Qt在Linux下想要获取操作系统中的鼠标键盘信息,需要调用到X11窗口管理系统,不过依照Linux一切皆文件的思想,也可以直接在/dev中找到对应的设备IO文件解析键盘和鼠标的IO信息。
  • 在Window下则需要借助hook机制,hook机制是一种消息处理机制,一旦特定消息来了,就会给应用发通知。

学Qt前需要前置知识

  • C++基本语法
  • C++标准库
  • 面向对象编程思想

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/270630.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯-Set

目录 HashSet类常用方法 1 add(Object obj)方法 2 size() 方法 3 remove(Object obj)方法 4 contains()方法 5 clear() 方法 例题实战 set 一个不允许出现重复的元素,并且无序的集合,主要有HashSet实现类。 在判断重复元素的时候,Set集…

基于Python实现银行卡识别

在本文中将介绍如何使用Python和深度学习技术来实现银行卡识别功能。银行卡识别是一个在金融、安全等领域具有重要应用的问题,将使用深度学习模型来实现银行卡图像的识别和分类。 目录 引言数据集准备预处理和特征提取模型选择与训练模型评估与性能优化部署与应用 引…

第三百八十六回

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示…

[Redis]——数据一致性,先操作数据库,还是先更新缓存?

目录 一、操作缓存和数据库时有三个问题需要考虑: 1.删除缓存还是更新缓存? 2.如何保证缓存与数据库的操作同时成功或失效 3.先操作缓存还是先操作数据库(多线程并发问题) 二、 缓存更新的最佳策略 一、操作缓存和数据库时有…

heic怎么转换成jpg?3个方法帮你一键批量转换

heic怎么转换成jpg?在日常生活中,将HEIC转换为JPG可以为我们带来诸多便利。JPG格式作为一种广泛被接受的图片格式,不仅兼容性更强,还能在各种设备和平台上顺畅显示。这意味着,无论是上传到社交媒体,还是发送…

观其大略之HybridCLR学习笔记

问题背景 1 现有热更方案的开发效率、性能没有到达极限,还有提升的空间 2 ios多平台政策导致热更新受限问题,ios禁止jit。根据我查找的资料,ios的代码段启动的时候就确定了,不能增加新的代码段。IOS封了内存(或者堆&…

MySQL基础-----SQL语句之DDL数据定义语句

目录 前言 开启登录数据库 一、数据库操作 1.查询所有数据库 2.切换使用数据库 3.查询当前使用的数据库 4.创建数据库 创建一个hello数据库, 使用数据库默认的字符集。 创建一个itheima数据库,并且指定字符集 5.删除数据库 二、表操作 1.查询当前数据库所有…

html样式排版

<template><div class"box"><div class"header">头部</div><div class"main"><div class"left">菜单</div><div class"right"><div class"right-contentr"&g…

可调恒定电流稳压器NSI50150ADT4G车规级LED驱动器 提供专业的汽车级照明解决方案

NSI50150ADT4G产品概述&#xff1a; NSI50150ADT4G可调恒定电流稳压器 (CCR) &#xff0c;是一款简单、经济和耐用的器件&#xff0c;适用于为 LED 中的调节电流提供成本高效的方案&#xff08;与恒定电流二极管 CCD 类似&#xff09;。该 (CCR) 基于自偏置晶体管 (SBT) 技术&…

thinkphp学习12-数据库的时间查询

传统方式 可以使用>、<、>、<来筛选匹配时间的数据&#xff1b; public function index() {$res Db::name(user)->where(create_time, >, 2018-1-1)->select();dump($res); }可以使用 between 关键字来设置时间的区间&#xff1b; public function in…

【vue】ant-design弹出框无法关闭和runtimecore提示isFucntion is not function的问题修复

【vue】ant-design弹出框无法关闭和runtimecore提示isFucntion is not function的问题修复&#xff0c;初步分析是vue发布3.4版本以后引起的兼容性问题。 问题截图&#xff1a; 1.isFucntion is not function&#xff0c;是由于vue升级后众多插件版本不匹配造成的问题 2.弹框…

vue3+ts项目创建 使用npm create vue@latest

npm create vuelatest相关创建代码&#xff1a;

Linux常用命令(超详细)

一、基本命令 1.1 关机和重启 关机 shutdown -h now 立刻关机 shutdown -h 5 5分钟后关机 poweroff 立刻关机 重启 shutdown -r now 立刻重启 shutdown -r 5 5分钟后重启 reboot 立刻重启 1.2 帮助命令 –help命令 shutdown --help&#xff1a; ifconfig --help&#xff1a;查看…

Docker知识点总结二

四、 Docker 架构 Docker使用客户端-服务器(C/S)架构模式&#xff0c;使用远程API来管理和创建Docker容器。 介绍&#xff1a; 1、Docker的客户端client&#xff0c;我们在命令行发送一些信息(命令)给Docker服务端。2、中间这个就是Docker的服务端&#xff0c;在这个服务端里面…

基于dashscope在线调用千问大模型

前言 dashscope是阿里云大模型服务平台——灵积提供的在线API组件。基于它&#xff0c;无需本地加载大模型&#xff0c;通过在线方式访问云端大模型来完成对话。 申请API key 老规矩&#xff1a;要想访问各家云端大模型&#xff0c;需要先申请API key。 对于阿里云&#x…

关于 DevOps,如何应对IT服务交付中的问题?

文章目录 &#x1f4cb; 前言&#x1f3af; 如何应对IT服务交付中的问题&#xff1f;&#x1f3af;关于 DevOps 书籍推荐&#x1f4dd;最后&#x1f525; 参与方式 &#x1f4cb; 前言 DevOps 是一种软件开发方法论和实践&#xff0c;旨在通过缩短开发周期、提高交付速度和改进…

Service Mesh:重塑微服务市场

摘要 今天我们不谈技术&#xff0c;不谈架构&#xff0c;也不谈具体的产品&#xff0c;我们来聊一聊在未来一两年之内&#xff0c;Service Mesh技术会在微服务相关的市场带来什么样的变化&#xff1f; 大家好&#xff0c;我是敖小剑&#xff0c;今天给大家带来的这个主题叫做…

【树上倍增】【割点】 【换根法】3067. 在带权树网络中统计可连接服务器对数目

作者推荐 视频算法专题 本文涉及知识点 树上倍增 树 图论 并集查找 换根法 深度优先 割点 LeetCode3067. 在带权树网络中统计可连接服务器对数目 给你一棵无根带权树&#xff0c;树中总共有 n 个节点&#xff0c;分别表示 n 个服务器&#xff0c;服务器从 0 到 n - 1 编号…

FPGA——三速自适应以太网设计(1)基本模块

FPGA——以太网设计&#xff08;1&#xff09;基本模块 1. 协议解析&#xff08;1&#xff09;MAC层&#xff08;2&#xff09;IP层 和 ARP层&#xff08;3&#xff09;UDP层 和 ICMP层 2.1 MAC接收模块2.2 MAC发送模块3.1 IP接收模块3.2 IP发送模块4.1 UDP接收模块4.2 UDP发送…

学习clickhouse 集群搭建和分布式存储

为什么要用集群 使用集群的主要原因是为了提高系统的可扩展性、可用性和容错性。 可扩展性&#xff1a;当单个节点无法处理增加的负载时&#xff0c;可以通过添加更多的节点到集群来增加处理能力。这使得系统可以处理更大的数据量和更高的查询负载。可用性&#xff1a;在集群…