![](https://img-blog.csdnimg.cn/direct/54c05b61bfa34582a9e9d6f317d755d2.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
QT实战系列
文章平均质量分 77
分享QT相关功能用法,以项目实战应用为主,主要内容都是项目开发中应用过的技术或者遇到的问题及解决方法~
AI+程序员在路上
技术分享,互学共进~
展开
-
QT两个专栏文章汇总导图
本文是对本博客QT专栏的的总结与梳理,同时也是对专栏的重点提炼,对QT入门与提高具有指导作用,是一份学习路径图,希望对需要的读者有所帮助~原创 2024-05-20 20:22:26 · 318 阅读 · 0 评论 -
QDockWidget类详解
1.QDockWidget类QDockWidget类提供了一个特殊的窗口部件,它可以是被锁在QMainWindow窗口内部或者是作为顶级窗口悬浮在桌面上。QDockWidget类提供了dock widget的概念,dock widget也就是我们熟悉的工具面板或者是工具窗口。Dock window是放置在QMindow窗口周围的dock widget区域中的。原创 2024-07-03 19:57:16 · 621 阅读 · 0 评论 -
VST3音频插件技术介绍
VST3音频插件技术介绍一.概述1.VST3介绍 VST3(Virtual Studio Technology 3)是一种音频插件格式,由Steinberg公司开发,用于在数字音频工作站(DAW)中使用。VST3插件可以是模拟合成器、鼓机、混响器、压缩器等多种类型的音频处理工具[2]。2.官网https://www.steinberg.net/developers/原创 2024-06-18 20:20:48 · 315 阅读 · 0 评论 -
在VS中添加lib库的三种方法与DLL加载的四种方法
在VS中添加lib库的三种方法与DLL加载的四种方法一.lib库加载方式方法1: 通过设置工程配置来添加lib库.A、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。B、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。C、 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。原创 2024-06-18 20:14:21 · 1171 阅读 · 0 评论 -
QVariant用法介绍
1.QVariant是Qt中一个强大的变体类,提供了一种通用的方式来存储Qt对象及其他类的值,可以以类似于指针的方式存储任意类型的值。由于QVariant是一个通用的类型,因此可以在不丢失语义的情况下存储几乎所有数据类型。作为一个变体类型,它支持自我描述、值类型检查和动态转换等特性,具有安全性和利用性。QVariant 的设计目的是为了提供一个统一的接口来处理多种数据类型,这在处理不确定类型或需要存储多种类型数据的场景中非常有用。原创 2024-06-07 19:44:49 · 621 阅读 · 0 评论 -
四种编程命名规则介绍
四种编程命名规则介绍一.骆驼命名法(Camel)二、帕斯卡命名法((pascal) 三.匈牙利命名法四.下划线命名法(也称为蛇形命名法)原创 2024-06-05 20:16:06 · 907 阅读 · 0 评论 -
Qt各发布版本介绍与选择
一.Qt各个主要版本介绍QT4,QT5,QT6原创 2024-06-02 11:13:41 · 1469 阅读 · 0 评论 -
Qml开发的两种方法
一.Qml开发的两种方法1.Qt Creator 开发,手动编写qml代码 这种方法开发很方便,适合对qml语言非常熟悉的开发人员。2.用Qt Design Studio 设计qml界面 这种方法更适合对qml不太熟悉的人,可以实现qml控件的拖拉拽,类似与widget界面开发;当然这种方法也能提升qml开发的效率。原创 2024-06-02 11:11:09 · 1417 阅读 · 0 评论 -
CMake的原理与使用方法
一.为什么需要CMake,什么是CMake 1.由于各种make工具遵循不同的规范和标准,所执行的Makefile格式也不同,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。原创 2024-05-31 20:23:43 · 746 阅读 · 0 评论 -
常用批处理命令及批处理文件编写技巧
一常用批处理命令1.查看命令用法:命令 /? //如:cd /? 2.切换盘符目录:cd /d D:\test 或直接输入 d: //进入上次d盘所在的目录3.切换目录:cd test4.清屏:cls 5.“arp -a” //它会列出当前设备缓存中的所有 IP 地址及其对应的 MAC 地址6.dir //显示目录中的文件和子目录列表原创 2024-05-28 20:20:29 · 516 阅读 · 0 评论 -
QT使用特点汇总
一.Qt的历史及功能介绍 Qt 最早在1991年由挪威的两位程序员 Eirik Chambe-Eng 和 Haavard Nord 开发,他们在1994年创立 Trolltech 公司(奇趣科技)正式经营软件业务。Qt 可以开发支持Windows、Linux和macOS多平台的跨平台桌面应用软件,也可以开发iOS和Andriod移动平台的移动App,还可以用于嵌入式设备中的嵌入式应用软件的开发。原创 2024-05-23 20:09:07 · 972 阅读 · 2 评论 -
软件开源协议与QT的开源协议介绍
一.常见的六种软件开源协议1.BSD协议2.Apache Licence 2.03.GPL协议4.MIT协议5.LGPL协议6.Mozilla许可证二.如何选择开源协议宽松程度:MIT>BSD>Apache>LGPL>Mozilla>GPL三.QT的开源协议1.QT是开源的,需要遵循LGPL、GPL协议2.Qt也提供了Commercial商业协议3.QT官网各个模块开源许可查询https://www.qt.io/zh-cn/product/features原创 2024-05-23 20:07:16 · 1498 阅读 · 0 评论 -
Android 应用开发语言选择对比
Android开发语言有多种,但是每种语言的各有不同的适用场景,对比介绍如下:一.首选:原生应用Java,Kotlin1.截至目前,大约有70%的Android开发者仍然使用Java语言进行开发,而30%的开发者则选择使用Kotin语言进行开发。虽然Java仍然是Androio开二.其他语言,非原生应用1.C++2.C#3.LUA6.JavaScript三.总结 原生应用(java、Kotlin)>qml>qt5 widget>qt6 widget>c#>其他原创 2024-05-21 19:55:40 · 1833 阅读 · 0 评论 -
Android应用开发之AndroidManifest.xml
一.AndroidManifest.xml介绍 1.定义 AndroidManifest官方解释是应用清单(manifest意思是货单),每个应用的根目录中都必须包含一个,并且文件名必须一模一样。它是Android程序的全局配置文件,是每个 android程序中必须的文件。它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。原创 2024-05-20 20:20:02 · 1265 阅读 · 0 评论 -
Qt Widgets与QML、Qt Quick的区别及对比
很多人会问已经有了Qt Widgets,为什么还要引入QML和Qt Quick?其实引入QML和Qt Quick是为了更好地满足现代化UI界面(要炫酷和复杂的UI)的需求,提高开发效率和代码可维护性。同时,Qt Widgets和QML/Qt Quick可以灵活地结合使用。原创 2024-05-14 20:04:23 · 1097 阅读 · 0 评论 -
QSplitter分裂器的使用方法
QSplitter分裂器的使用方法1.QSplitter介绍QSplitter是Qt框架提供的一个基础窗口控件类,主要用于分割窗口,使用户能够通过拖动分隔条来调节子窗口的大小。2.QSplitter的添加方法(1)通过Qt Creator的界面设计工具添加;(2)直接使用C++代码添加。说明:方法a最为直观和方便,本文将重点介绍这种方法。原创 2024-05-08 10:07:56 · 307 阅读 · 0 评论 -
QT实现Home框架的两种方式
在触摸屏开发QT界面一般都是一个Home页面,然后button触发进入子页面显示,下面介绍这个home框架实现的两种方式:1.方式一:用stackedWidget实现2.方法二:用Frame控件实现原创 2024-05-08 10:04:12 · 1030 阅读 · 0 评论 -
算法复杂度介绍
算法的复杂度算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机应用的早期,存储容量很小,所以对空间复杂度很是在乎。但现在计算机行业迅速发展,计算机的存储容量已经很高,所以我们如今已经不需要再特别关注一个算法的空间复杂度。原创 2024-04-27 12:29:54 · 785 阅读 · 0 评论 -
C++中的lambda表达式详解
1.lambda 表达式(也称为 lambda 函数)lambda 表达式是C++11中引入的一种方便创建匿名函数对象的方式。它们可以捕获其所在作用域中的变量,并在需要时调用它们。Lambda 表达式提供了一种简洁、方便的方式来定义小型的、可重用的函数对象,而无需显式地定义一个类并重载其调用运算符。它们常用于简短的回调、排序准则、以及任何需要简单函数对象的场合。原创 2024-04-26 20:44:16 · 967 阅读 · 0 评论 -
泛型编程介绍
泛型编程(Generic Programming)在计算机科学中,是一种允许一个值取不同数据类型(所谓多态)的技术。这种编程风格强调使用泛型技术,旨在推出一种针对算法、数据结构和内存分配机制的分类方法,以及其他能够带来高度可重用性、模块化和可用性的软件工具。泛型这个词并不是通用的,在不同的语言实现中,具有不同的命名。在Java/Kotlin/C#中称为泛型(Generics),在ML/Scala/Haskell中称为Parametric Polymorphism,而在C++中被叫做模板.原创 2024-04-26 20:40:23 · 945 阅读 · 0 评论 -
C++ explicit关键字详解
C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的;跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).注意explicit关键字只对有一个参数的类构造函数有效, 如果类构造函数参数大于或等于两个时, 是不会产生隐式转换的, 所以explicit关键字也就无效了。原创 2024-04-23 20:33:51 · 442 阅读 · 0 评论 -
C及C++标准与QT版本介绍
C及C++标准与QT版本介绍一.软件规范及组织GNU是“GNU's Not Unix”的缩写,是GNU计划(GNU Project)GPL全称是GNU General Public License,中文名为GNU通用公共许可证。3.POXIS(Portable Operating System Interface)System V是由AT&T开发的Unix操作系统的一个版本,在1983年首次发布。二.C语言与C++标准2.C++标准:三.QT版本与选择:注意:Qt6不支持Windows 7原创 2024-04-20 10:37:28 · 802 阅读 · 2 评论 -
C++多态
多态(polymorphic)就是对于某个事情,不同对象去做会有不同的状态。(例如:不同身份的人去买火车票,会有不一样的价格)多态是在不同继承关系的类对象,调用同一个函数,产生不同的行为。多态的构成条件:被调用的函数必须是虚函数,并且子类必须对父类的虚函数进行重写。必须通过父类的指针或引用调用虚函数。二.如何实现多态1.使用虚函数(Virtual Function):2.创建派生类并重写虚函数:3.通过基类的引用或指针调用虚函数:原创 2024-04-20 10:32:22 · 854 阅读 · 0 评论 -
预处理与宏定义
预处理,宏定义在C语言中,预处理阶段是代码执行之前的一个重要步骤,负责对源代码进行宏替换、条件编译等处理。预处理器提供了强大的工具,使得我们能够在编写代码时更加灵活、高效。原创 2024-04-19 09:27:39 · 633 阅读 · 0 评论 -
C++类型推导之auto关键字
C++类型推导之auto关键字auto关键字是在C++11中引入的;auto关键字用于自动推断变量的类型。它可以根据变量的初始化表达式自动确定变量的类型,从而使代码更加简洁和易于阅读。使用auto关键字可以避免显式地指定变量的类型,特别是在涉及复杂的类型或使用模板时,可以减少代码的冗余。原创 2024-04-19 09:25:11 · 395 阅读 · 0 评论 -
C++模板
C++模板 是一种用于创建通用代码的机制,它允许程序员编写适用于多种数据类型的通用函数或类。 模板的定义和实现通常分为两部分:头文件(.h或.hpp文件)中的模板声明和实现文件(.cpp文件)中的模板定义。C++模板的优点:灵活性、可重用性和可扩展性减少开发时间高效性原创 2024-04-18 09:25:37 · 859 阅读 · 0 评论 -
NULL—0—nullptr 三者关系
NULL—0—nullptr 三者关系NULL,0,nullptr值都是0,但是类型不同,但是由于C头文件中NULL定义宏混乱,可能是int 0,也可能是(void*)0;所以在C++11及以后的标准中引入新的空指针nullptr,nullptr就是(void*)0,所以在C++中空指针统一用nullptr。原创 2024-04-17 09:23:31 · 279 阅读 · 0 评论 -
Qt中定时器的3种实现方法
Qt中定时器的3种实现方法一.使用QTimer定时器类(首选)void QTimer::setInterval ( int msec )int QTimer::start void QTimer::stop ()二.QObject中的定时器的使用1.需要用到三个函数int QObject::startTimer void QObject::timerEvent void QObject::killTimer 三.静态的singleShot ()函数创建单触发定时器(不推荐)原创 2024-04-17 09:21:14 · 1767 阅读 · 0 评论 -
C++重载
函数重载1.概念及规则在C++中,函数重载(Function Overloading)是一种允许在相同作用域内使用相同函数名定义多个函数的功能,但这些函数的参数列表(参数类型、参数数量或参数顺序)必须不同。函数重载的主要目的是为了增强代码的可读性和灵活性,使得程序员可以使用相同的函数名来执行不同的操作,只需根据参数的不同来区分。运算符重载在 C++ 中,运算符重载是一个允许程序员自定义各种运算符(如 + , - , == , != 等)在自定义类型(类或结构体)上的行为的特性。原创 2024-04-10 09:10:31 · 356 阅读 · 0 评论 -
QT及C++中的构造函数与析构函数
1.什么是构造函数类的构造函数 是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void 。构造函数可用于为某些成员变量设置初始值。2.什么是析构函数析构函数是 C++ 中的一个特殊的成员函数,它在对象生命周期结束时被自动调用,用于执行对象销毁前的清理工作。析构函数特别重要,尤其是在涉及动态分配的资源(如内存、文件句柄、网络连接等)的情况下。原创 2024-04-10 09:08:58 · 1318 阅读 · 0 评论 -
C++Qt中异常处理try-catch
运行时错误是指程序在运行期间发生的错误,例如除数为 0、内存分配失败、数组越界、文件不存在等。C++ 异常(Exception)机制就是为解决运行时错误而引入的。二.应用程序调试的几种方法1.直接打印信息:如printf,qDebug2.用log打印存储3.try-catch捕捉原创 2024-04-09 09:28:30 · 1272 阅读 · 0 评论 -
C++与Qt中回调函数的两种实现方法
回调函数的应用场合事件驱动编程:在图形用户界面(GUI)编程中,用户的每一个动作,如点击按钮、移动鼠标等,都可能会触发一个事件。这些事件常常通过回调函数来处理。例如,当用户点击一个按钮时,你可能希望执行一个特定的函数。异步编程:在网络编程或者其他需要异步处理的场景中,当一个长时间的操作(如网络请求)完成时,你可能希望执行某个函数。这个函数可以通过回调来指定。定时器:某些编程环境允许你设置定时器,当定时器到期时执行一个函数。这个函数就是通过回调来指定的。原创 2024-04-09 09:27:26 · 1482 阅读 · 0 评论 -
QT及C++中引用的用法和意义
QT及C++中引用的用法和意义1.引用的含义引用(Reference)是 C++ 相对于C语言的又一个扩充。引用可以看做是数据的一个别名,通过这个别名和原来的名字都能够找到这份数据。2.引用的本质其本质只是对指针进行了简单的封装,它的底层依然是通过指针实现的。在 C++ 中引入引用的直接目的是为了让代码的书写更加漂亮,尤其是在运算符重载中,不借助引用有时候会使得运算符的使用很麻烦。原创 2024-04-07 11:46:43 · 1401 阅读 · 0 评论 -
Qt调用C函数
Qt或者C++中调用C函数方法1.如果在Qt或者C++文件中直接调用.c文件中的C函数是会报错的,如:error: undefined reference to `vendor_app_handle()'2.这种情况有两种解决方法:(1)在头文件中直接使用#ifdef __cplusplusextern "C" {#endif#include "xxx.h"int vendor_app_handle(void);#ifdef __cplusplus原创 2024-04-07 10:22:45 · 525 阅读 · 0 评论 -
QT各种锁及线程同步应用
在Qt中,主要有以下几种锁的类型,可以用于实现同步功能:(1)QMutex(互斥锁):是最常见的锁类型,用于实现简单的互斥访问。(2)QMutexLocker:是一个RAII类,用于简化对QMutex的加锁和解锁过程。(3)QReadWriteLock(读写锁):用于实现读写分离的锁机制,允许多个线程同时读取共享资源,但只有一个线程可以进行写入操作。(4)QSemaphore(信号量):允许控制对共享资源的并发访问数量。(5)QWaitCondition(条件变量):用于线程间的等待和唤醒原创 2024-04-06 09:41:19 · 1406 阅读 · 0 评论 -
QT智能指针
Qt智能指针是一种能够在不需要手动管理内存的情况下,自动释放资源的指针。它们是C++11的std::shared_ptr的一种扩展,可以用于管理Qt对象,尤其是那些不是QObject的对象。使用智能指针可以避免内存泄露和悬垂指针等问题,同时也提高了代码的可读性和可维护性。1.Qt框架提供了几种智能指针:QSharedPointer:QScopedPointer:QPointer:QWeakPointer:原创 2024-04-06 09:31:03 · 987 阅读 · 0 评论 -
QT实现NTP功能
.NTP定义NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用于分布式设备(比如电脑、手机、智能手表等)进行时间同步,避免人工校时的繁琐和由此引入的误差,方便快捷地实现多设备时间同步。NTP校时服务基于UDP传输协议进行报文传输,工作端口默认为123/udp。NTP使用协调世界时(UTC)以极高的精度同步计算机时钟时间,例如在局域网(LAN)中低至1毫秒,在互联网上则在数十毫秒内。2.NTP 网络结构原创 2024-04-04 11:04:20 · 1604 阅读 · 0 评论 -
QT之单例模式
单例模式的优点和缺点优点:提供全局访问点,方便在应用程序的不同部分共享对象。确保只有一个实例存在,节省资源。提供对单一资源或配置的集中管理。支持懒加载,只在需要时创建实例。缺点:可能导致全局状态,增加了代码的耦合性。在某些情况下可能会引入单点故障。难以进行单元测试,因为单例对象难以模拟或替代。原创 2024-04-04 10:59:05 · 1030 阅读 · 0 评论 -
QT实现windows下获取CPU、内存及磁盘信息
QT实现windows下获取CPU、内存及磁盘信息原创 2024-03-27 09:24:39 · 1352 阅读 · 0 评论 -
QT中实现log存储的四种方法
业项目开发中,大部分的程序都需要有个日志的输出功能,希望可以将程序的运行状态存储到文本文件或者数据库或者做其他处理,下面介绍几种QT中日志功能的实现方式。二.QT中日志功能的实现方式1.日志重定向输出2.log4qt3.QsLog 4.qclog原创 2024-03-27 09:22:22 · 1172 阅读 · 0 评论