QT学习笔记1.2(QT的应用)

Qt桌面应用开发 阅读详情

QT原生用于c++的开发,

主要应用于电脑、桌面手机桌面软件的开发,主要是widget样式模板。

Qt Widgets、Qt Quick 和 Qt for Python 是 Qt 框架中的三种不同的技术,分别用于不同的应用场景。以下是它们的详细介绍和对比:

1. Qt Widgets
Qt Widgets 是 Qt 框架中经典的 GUI(图形用户界面) 库,主要用于桌面应用程序开发。

特点:

基于传统的 控件(Widget),如按钮、文本框、标签等,用于构建静态的、基于窗口的用户界面。
每个控件都是一个独立的对象,能够响应用户事件(如点击、键盘输入等)。
基于 C++:Qt Widgets 使用的是 Qt 的 C++ API。
UI 元素的布局使用 布局管理器(Layout Manager) 来控制,适合复杂的桌面 UI 应用程序。
Qt Widgets 适合需要高度自定义、复杂控件和典型桌面用户体验的应用。
适用场景:

桌面应用:需要传统的窗口、小部件控件的复杂桌面应用程序,如文本编辑器、文件管理器等。
自定义控件:对 UI 控件的外观和行为进行细致控制。
优点:

更成熟,适合复杂的桌面应用。
经典的面向对象控件系统,适合熟悉桌面 GUI 设计的人。
2. Qt Quick
Qt Quick 是用于构建现代用户界面(特别是触摸屏和移动设备 UI)的技术,主要采用 QML 语言。

特点:

基于 QML(Qt Meta Language),它是一种声明式语言,专为创建动态用户界面设计。
支持 动态、流畅的动画效果 和 响应式布局,特别适合移动设备和触摸屏界面。
与 Qt Widgets 相比,Qt Quick 更加轻量,性能优越,尤其在需要流畅动画的场景下。
支持与 C++ 代码的集成,复杂的逻辑可以在 C++ 中实现,而 UI 则在 QML 中定义。
适用场景:

移动设备应用:适合需要流畅动画、触摸交互的应用程序,如智能手机、平板设备。
嵌入式设备:适合 UI 复杂、需要触摸屏和现代设计的嵌入式设备应用。
动态 UI:适合需要使用动画、视差滚动等特效的应用。
优点:

使用 QML 声明式语言,简洁、易读,适合快速开发动态界面。
支持现代用户交互模式(触摸、手势等)。
UI 动画效果优秀,性能良好。
3. Qt for Python(PyQt / PySide)
Qt for Python 是 Qt 框架的 Python 绑定,它使开发者可以使用 Python 编写 Qt 应用程序。主要分为 PyQt 和 PySide 两种实现,它们都提供了 Qt 的完整功能。

特点:

使用 Python 语言 编写 Qt 应用程序,而不是 C++。
提供与 C++ 相同的 Qt API 接口,因此开发者可以在 Python 中使用 Qt 的所有功能,包括 Qt Widgets 和 Qt Quick。
与 Python 强大的生态系统兼容,允许将 Qt 与其他 Python 库结合使用。
PyQt 和 PySide 的差异主要体现在许可和一些细节实现上,PySide 是由 Qt 官方 提供和支持的,而 PyQt 由第三方维护。
适用场景:

快速原型开发:Python 的开发效率高,适合快速构建和测试应用程序。
跨平台桌面应用:可以使用 Python 编写跨平台的桌面应用,并与 Qt 的强大 GUI 框架结合使用。
数据驱动的应用:结合 Python 的数据处理库,如 NumPy、Pandas 等,开发数据分析和可视化工具。
优点:

Python 语言简洁易学,开发效率高。
允许开发者利用 Python 的强大生态系统,如科学计算、数据分析、网络应用等。
可以与 C++ Qt 代码混合使用,提供更灵活的开发选择。
总结对比:
Qt Widgets:适合传统桌面应用开发,注重控件的静态布局和高度自定义的界面。
Qt Quick:适合现代、动态、触摸友好的用户界面开发,特别适合移动设备和嵌入式设备。
Qt for Python:使用 Python 编写 Qt 应用程序,适合快速开发、数据处理和原型设计。
每种技术都有不同的优势,选择取决于你的项目需求。例如,桌面应用中可以使用 Qt Widgets,而移动应用或需要动态界面的场景则适合使用 Qt Quick。如果你熟悉 Python 或需要快速开发,可以使用 Qt for Python。

比较:

特性Qt WidgetsQt Quick
语言C++QML(声明式语言)
渲染CPU 渲染GPU 加速渲染
UI 风格传统桌面应用现代动态界面,动画丰富
性能绘图性能较低高性能,适合复杂图形和动画
开发难度需要较多手动管理声明式编程,简化UI开发
适用场景传统桌面应用,工具类应用移动、嵌入式、需要复杂图形的应用

选择建议:
如果你正在开发 传统桌面应用,且用户界面主要是静态的,使用 Qt Widgets 会更合适。它稳定且提供了成熟的桌面组件。
如果你正在开发一个 现代应用,特别是需要复杂动画、图形过渡、触摸交互或需要在移动设备和嵌入式设备上运行的应用,使用 Qt Quick 会更合适。

Qt 框架本身是用 C++ 编写的,并且主要提供了原生的 C++ API。然而,Qt 通过绑定技术支持多种编程语言的开发,使得开发者可以在不同语言中利用 Qt 的强大功能。以下是一些常见的编程语言和 Qt 的支持情况:

1. C++
官方支持:Qt 最初就是为 C++ 设计的,因此 C++ 拥有最完整的 Qt 功能支持,包括 Qt Widgets、Qt Quick、Qt 网络模块等所有 Qt 模块。
特点:高性能、强大的类型检查和面向对象的设计,适合复杂的桌面应用程序、嵌入式系统和高性能的移动应用开发。
2. Python
绑定库:PyQt 和 PySide(Qt for Python)。
特点:
Python 是一种高效、简洁、动态的语言,结合 Qt 的强大 GUI 库,适合快速开发桌面应用、工具和原型设计。
PyQt 是由第三方提供的绑定库,而 PySide 是由 Qt 官方维护的绑定库,它们都可以用来访问 Qt 的大部分功能。
3. JavaScript (QML)
用于:Qt Quick。
特点:
QML 是基于 JavaScript 的声明式语言,专门用于 Qt Quick 开发,它适合构建现代化、动态和流畅的用户界面。
开发者可以在 QML 中使用 JavaScript 编写逻辑和事件处理程序,而 UI 元素和动画可以通过 QML 定义。
4. Rust
绑定库:Rust-Qt 和 CXX-Qt。
特点:
Rust 是一种快速发展的系统编程语言,因其 内存安全性 和 并发处理能力 而广受欢迎。
Rust 开发者可以通过 Qt 绑定库将 Qt 的强大功能与 Rust 的内存安全机制结合起来进行开发,尤其适合系统编程或嵌入式系统中的 GUI 开发。
5. Go
绑定库:GoQt 和 qt-go。
特点:
Go 是一种简洁的编程语言,适合网络应用和并发系统的开发。
使用 Go 的 Qt 绑定库,开发者可以利用 Go 语言简洁高效的优势开发跨平台的 GUI 应用。
6. C#
绑定库:Qyoto(也叫 QtSharp)。
特点:
C# 是一种由微软开发的高级语言,广泛用于桌面应用和企业级开发。
Qyoto 项目为 C# 提供了 Qt 的绑定库,允许 C# 开发者使用 Qt 开发 GUI 应用程序。
7. Java
绑定库:QtJambi。
特点:
QtJambi 是 Qt 官方提供的 Java 绑定库,可以让 Java 开发者利用 Qt 的功能开发桌面应用程序。
虽然 Java 本身有 Swing 和 JavaFX 这样的 GUI 框架,但 Qt 的强大跨平台能力使得它成为一些项目中的选择。
8. 其他语言支持
还有其他一些较少见的语言绑定库,例如 Ruby(QtRuby) 和 Perl(PerlQt),但这些语言在使用 Qt 时的普及度不如前面提到的语言高。


总结
Qt 框架通过多种绑定库支持多语言开发,包括但不限于以下语言:

C++(原生支持)
Python(PyQt、PySide)
JavaScript(QML, 用于 Qt Quick)
Rust(Rust-Qt, CXX-Qt)
Go(GoQt, qt-go)
C#(Qyoto)
Java(QtJambi)
不同语言的支持程度有所不同,C++ 是最完整的,而其他语言通过绑定库可以访问大部分 Qt 功能。开发者可以根据项目需求选择最适合的语言与 Qt 结合使用。

PyQt5的QtWidgets模块介绍 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考PyQt5的QtWidgets模块包含了很多类,用于创建GUI应用程序的各种控件和窗口部件。其中一些主要的类包括:QApplication:应用程序类,负责管理应用程序的控制流程和事件循环。QMainWindow:主窗口类,提供了一个应用程序的主界面。QWidget:窗口部件类,是所有用户界面元素的基类。 阅读详情

相关推荐

QT学习笔记

QT学习笔记(一) 作者:Kagula 最后更新日期:2015-01-07 目的: 了解QT基本开发流程。 正文: 准备: 环境: VS2010SP1、 VS2013Update3、 Win7SP1-64bits 安装: [1]Qt 5.4.0 for Windows 32-bit (VS 2010, OpenGL, 625 MB)  [2]V

lee353086的专栏 1万+

【QT教程】QT6 Widgets深入剖析

Widgets的概念与分类Widgets的概念与分类在QT6开发环境中,小部件(Widgets)是构成用户界面的基本元素。QT6提供了一个丰富的库,用于创建桌面、移动和嵌入式应用程序的用户界面。本节将详细介绍小部件的概念和分类。Widgets的概念小部件是图形用户界面(GUI)编程中的一个重要概念。它是构成用户界面的基本元素,可以是按钮、文本框、标签、滑动条等。在QT中,小部件是一个拥有绘制和事件处理功能的对象。通过组合和使用这些小部件,开发者可以创建出功能丰富、界面友好的应用程序。

QT性能优化QT原理源码QT界面美化 2902

用mingw静态编译Qt4.8.2和Qt5.1.1

因为一些乱七八糟的原因,我需要用mingw静态编译Qt4.8.2和Qt5.1.1。 经历了一天的折腾之后,自觉编译一下Qt还是件颇为麻烦的事情,故将过程略作总结,以备不时之需。 首先,在编译之前,我需要下载mingw、qt-everywhere-opensource-src-4.8.2和qt-everywhere-opensource-src-5.1.1。 然后,准备开始编译了,当然

云彩挂上的二叉树 6547

QT知识:Qt Widgets小部件类【01】

因为QWidget类本身含有的属性、方法多,而我们经常使用这个类,所以就准备开个系列来一点点介绍这个类。

gongdiwudu的专栏 8418

Qt5学习笔记基础篇(1)创建第一个Qt应用程序

创建第一个Qt应用 初次接触Qt,安装之后发现他的官方文档内容详实,条理清晰,并且集成在开发工具Qt Creator之中,阅读非常方便。因此决定学习初期直接参阅官方文档,而这个系列的文章则是学习过程的一个记录。 1.1 Qt概述 Qt是一个同时支持桌面,嵌入式,移动端的跨平台应用程序开发框架,在Linux,Windows,OS X,iOS,Android等操作系统上都可以运行。 Qt本身并不是一个...

cmiao-me 1322

VS2010 + QT5.2+ QT-VS-Addin1.2.2开发环境配置

: 本文档为QT开发学习笔记,主要方便以后查阅。如有错误,欢迎指正。 安装环境阐述: Win7 / VS2010; 所需软件: QT5.2 (Qt安装包)+ qt-vs-addin1.2.2(vs下的qt插件); 下载地址: QT:http://qt-project.org/downloads; qt-vs-addin1.2.2:http://download.qt.io/official

qqmindyourwill的博客 1万+

QT跨平台应用程序开发框架(1)—— 环境搭建

其实说是安装三个东西,其实只要安装一个Qt SDK,其它两个都有了。之后一路点击下一步即可,就是安装路径不要带中文,不要带特殊符号和空格。创建好项目后会预先生成一些代码,我们来讲解一下这些代码做了什么。Windows下还有哪些方案可以开发GUI?之后一路确认然后安装即可。

aaqq800520的博客 3876

QtSharp:Qt的Mono.NET绑定

该存储库已过时。 有关新的代码和二进制版本,请访问 。 QtSharp Qt的Mono / .NET绑定 该项目旨在创建包装Qt( )的Mono / .NET库,从而通过C#启用它。 它依赖于出色的CppSharp( )。 它是一个生成器,它期望Qt设置的包含目录和库目录,然后生成并编译包装器。 尽管仍在开发中,但完成后它应可与任何Qt版本一起使用。 存储库中不包含Qt,用户必须自己下载并安装Qt。 目前,用于Windows的Qt MinGW是唯一经过测试的版本。 已计划针对OS X和Linux的Qt,尚未计划针对VC ++的Qt。 源代码被分成一个库,该库包含设置并通过生成器需求,并

QT跨平台应用程序开发框架(9)—— 容器类控件

QGridLayout 用来实现网格布局的效果,可以达到 M * N 的这种网格效果,主要属性和 QHBoxLayout 类似,但是设置 spacing 的时候是按照垂直水平两个方向来设置的。每个 Widget 只能设置一个布局管理器, 但是可以通过拖拽方式创建两个布局遍历器,但是这样创建的布局管理器仅仅只会将内部控件重新组合位置,并不会像上面一样随着窗口大小改变。而容器内控件包含的直接就是我们前面介绍的一堆的控件。解答:我们前面使用ui创建界面时,都是手动拖拽方式来布局的,其实这种方式不科学。

aaqq800520的博客 1145

基于PCIE8311+FPGA+TMS320F28335 PCIE应用项目开发板PROTEL99设计硬件(原理图+PCB)文件

基于PCIE8311+FPGA+TMS320F28335 PCIE X1应用项目开发板PROTEL99设计硬件(原理图+PCB)文件,Protel 99se 设计的项目工程文件,包括原理图及PCB印制板图,可用Protel或 Altium Designer(AD)软件打开或修改,都已经制板在实际项目中使用,可作为你产品设计的参考。

GJZGRB的博客 576

本地化部署dify,使用Database插件实现dify直连数据库报错No module named ‘MySQLdb‘解决方案

网上查阅各种资料,有说修改/dify-main/docker/volumes/sandbox/dependencies目录下的python-requirements.txt文件,添加了如下两行,试验后无效。,看到有人是其他报错,但是URI配置如下(在mysql后面加了pymysql),尝试后果真成功了。按照系统提示设置完数据库URI后保存出现错误。在工具市场查询Database,点击后进行授权。最后在该插件的项目地址获得灵感。

qiaoxu1989的博客 4333

QT跨平台应用程序开发框架(2)—— 初识QT

目录一,创建helloworld1.1 通过图形化1.2 通过代码1.3 通过编辑框1.4 使用按钮二,对象树2.1 关于对象树2.2 演示释放流程三,乱码问题3.1 为什么会有乱码问题3.2 解决乱码问题四,认识Qt坐标系五,周边5.1 命名规范5.2 快捷键5.3 如何使用帮助文档先双击 .ui 文件来到图形化编辑页面:然后就会在页面的右上方显示我们安装的控件:最后我们点击左下角运行按钮,我们创建的窗口上就会显示一个hello world字符串之后我们就可以往label对象里面设置一个文本:之后直接运行

aaqq800520的博客 2180

从SIGGRAPH审稿人视角看:什么样的TOG论文更容易被接收?

本文从SIGGRAPH审稿人视角深入解析TOG论文的审稿标准与投稿策略,揭示如何提升论文接收概率。重点探讨创新性、技术深度、实验验证等核心评分维度,并提供写作技巧与审稿意见应对策略,帮助研究者优化ACM Transactions on Graphics投稿质量。

weixin_33721344的博客 108

QT跨平台应用程序开发框架(6)—— 常用显示类控件

但是上面我们对 Label 尺寸的设置是“一次性”的,就上面的程序而言,只要我们扩大或缩小窗口大小,里面的 Label控件大小是不会变的,所以下面我们让 Label 的大小随着窗口大小实时发生改变。这个和 HTML 前端中一样的,有时候按钮旁边会有一些字,但是为了方便用户点击,一般用户直接点击按钮的旁边的文字也可以选中按钮,所以这个设置伙伴就是将文本和按钮“绑定”我们先使用 QLCDNumber 显示一个初始的数值,比如4,然后程序启动后,每过一秒数字就 -1,直到 0 就结束。

aaqq800520的博客 1538

Unity Android平台下插件/SDK开发通用流程

本文主要面向对Android开发不甚了解的Unity开发者,介绍了基于最新的Android Studio的标准Android开发环境与项目结构的配置流程,在此基础上,开发者可以快速的进行SDK的接入与插件的开发。

ZhangDi2017的博客 1万+

研一小白投稿SCI:Applied Intelligence从提交到Under Review的保姆级避坑指南

本文为研一学生提供Applied Intelligence期刊投稿的详细指南,涵盖格式校验、状态解析及审稿回应策略。特别强调声明文件、LaTeX模板的常见错误及应对方法,帮助新手避开高频踩坑点,提升投稿成功率。

weixin_29230805的博客 493

QT跨平台应用程序开发框架(4)—— 常用控件QWidget

有时候 Qt 内置的光标可能满足不了我们的需求,所以 Qt 也允许我们通过自定义图片的方式来设置光标//设置图标//设置窗口的图标//当我们点击时,是图片左上角在进行点击//假设我在按钮的边缘位置进行点击,但由于光标图片的左上角到按钮外面去了导致点击不到//所以我们可以设置实际点击在图片光标里的位置,10,10表示点击实际生效的位置,左上角是0,0如果导入的图片太大,我们也而已通过下面的API对图片进行缩放:iconfont-阿里巴巴矢量图标库。

aaqq800520的博客 1561

YOLO11实战优化:暗光环境检测 | 引入Retinex增强模块与YOLO11联合训练,解决夜间/低照度场景抓拍痛点

本文探讨了暗光环境下目标检测的技术挑战与解决方案。研究发现,传统CNN模型在低照度条件下性能显著下降,主要由于光子数减少导致信噪比降低、目标特征被噪声淹没。针对这一问题,文章提出将可微分光照增强模块嵌入YOLO检测器的技术路线,重点分析了Retinexformer+YOLO11联合方案的优势。 文章对比了YOLO系列模型在暗光场景的表现,指出YOLO11凭借其C3k2模块、无锚检测头和多任务统一骨干网络,在低对比度图像特征提取方面优于前代产品。同时详细介绍了Retinexformer的理论基础和技术创新,包

2601_95807009的博客 206

【QT】学习笔记1

Qt是一个1991年由QtCompany开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(MetaObjectCompiler,moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

Long_kin的博客 1399

ABAP SQL Hierarchy 全景参考,组织树、分类树与递归查询在数据库层的优雅落地

ABAP SQL中的hierarchy语法为树形数据结构处理提供了高效方案。S/4HANA系统中常见的成本中心、利润中心、物料分类等树形结构,传统开发需通过递归和嵌套循环处理,而ABAP SQL hierarchies通过将层级遍历能力下沉到SQL层,借助SAP HANA的层级函数支持,实现了更高效的查询。 该功能要求ABAP 7.51+版本,支持两种实现方式:CDS hierarchy用于创建可复用的稳定层级模型,适合业务核心数据;ABAP SQL HIERARCHY generator则适用于临时性层级

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 313

4.4 直流无刷电机(BLDC):控制器硬件设计

摘要 本文详细阐述了直流无刷电机(BLDC)控制器的硬件设计要点。控制器硬件主要包括微处理器单元、功率驱动模块、信号检测电路、通信接口和电源管理模块。在微处理器选型方面,分析了ARM Cortex-M系列、DSP等架构的适用场景,并对比了不同处理器的性能参数。功率驱动模块设计重点包括栅极驱动电路、逆变桥热管理和电流保护机制。信号检测部分介绍了位置传感器接口和模拟信号调理技术。此外,还讨论了通信接口设计、电源管理方案以及硬件布局与EMC设计规范。最后强调了硬件测试验证的重要性,包括故障注入测试等验证方法。整体

技术工作者 183

QT跨平台应用程序开发框架(8)—— 多元素控件

所以要想数据不被丢失,就得需要和“学生管理系统”一样,实现一个“保存数据到文件”和“从文件读取数据”的两个操作,每次运行程序时读取文件数据,每次关闭程序时,在析构函数里添加保存文件的操作。QTreeWidget 表示一个树形控件,里面的每个元素都是一个 QTreeWidgetItem,这个类可以包含多个文本和图标,每个文本/图标为一个列。上述几个控件相关的操作,数据都是在内存中保存的,重新运行程序后,数据都会重置。可以发现,说是6个控件,其实是3个,只是两两一组而已。

aaqq800520的博客 885

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

QT跨平台应用程序开发框架(5)—— 常用按钮控件

QPushButton 表示一个按钮,我们前面使用过很多次,继承自 QAbstractButton,这个类是一个抽象类,是其他按钮的父类,如下图:c++面向对象三大特性——多态_c++三大特性实例-优快云博客是一个包含纯虚函数的类,无法创建出实例,仅仅是为了被派生类继承并且派生类继承后后也不能实例化出对象。只有重写虚函数派生类才能实例化出对象属性说明text按钮中的文本icon按钮中的图标iconSize按钮中图标的尺寸shortCut按钮对应的快捷键autoRepeat。

aaqq800520的博客 1329

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

QT跨平台应用程序开发框架(7)—— 常用输入类控件

上面的 inputMask 功能有限,只能进行简单的验证,要想进行更复杂的验证,就要使用“正则表达式”注意:这里的格式化符号的含义,不要死记,不同语言/库的设定规则是存在差异的,⼀定是用的时候再去查。是否开启 undo(ctrl+z 撤销) / redo(ctrl+y 撤销撤销) 模式。效果就是我们在输入框中输入字符,上面的label会同步显示,由于太简单就不贴演示了。可以看到,1号的下午五点到2号的凌晨0点,中间是只隔了7小时的,但是多算进去了一天。

aaqq800520的博客 1047

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Qt学习笔记2——Qt模块

学习自:https://www.devbean.net/2012/08/qt-study-road-2-catelog/ 记录学习笔记仅供自己学习,如有侵权,请联系作者删除。 1.

yishi_c的博客 473
上一篇: qt-- 学习笔记4.4(信号和槽、事件)
下一篇: qt-- 学习笔记4.5(文件、参数文件)
code_snow
博客等级 码龄8年 316粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值