码农飞飞
这个作者很懒,什么都没留下…
展开
-
QT实现WebSocket通信
在Qt5中实现WebSocket通信可以通过使用QtWebSockets模块来实现。这个模块提供了一个WebSocket客户端和服务器的实现,可以很方便地在你的应用程序中集成WebSocket功能。原创 2024-07-10 17:56:47 · 94 阅读 · 0 评论 -
QT操作各类数据库用法详解
Qt提供了一个名为QtSQL模块的强大组件, 使得在Qt应用程序中连接和操作多种类型的数据库变得相对简单。Qt SQL模块支持多种数据库系统,包括但不限于SQLite、MySQL、 PostgreSQL、Oracle和Microsoft SQL Server等。下面介绍一下使用QT在处理数据库操作的时候的一些技巧。原创 2024-07-05 17:58:40 · 157 阅读 · 0 评论 -
细说QT程序高分屏适配
在Qt中实现高分辨率屏幕的适配,主要涉及对界面元素、字体大小和布局进行优化,以保证应用程序在不同分辨率和设备像素比率(DPI)的显示屏上均能正确显示。下面是一些关键步骤和技巧,用于在Qt应用程序中支持高分辨率屏幕.原创 2024-07-04 17:44:09 · 213 阅读 · 0 评论 -
QT工程项目配置用法详解
QT的pro文件是一个项目配置文件,用于定义项目中的源文件、库依赖、编译设置等。这个文件被qmake工具使用,以生成实际的构建文件,例如Makefile。这里介绍一下工程配置文件的用法原创 2024-07-02 13:17:34 · 51 阅读 · 0 评论 -
QT元对象系统的用法技巧
Qt的元对象系统是Qt框架的一个核心特性,它为对象提供了运行时类型信息、属性系统、信号和槽机制以及动态属性功能。这个系统是由Qt的元对象编译器(MOC)支持的,MOC是一个预处理器,它在编译之前解析由 Q_OBJECT 宏标记的类,生成元信息。这里介绍一些QT元对象系统的用法技巧.原创 2024-07-01 18:16:27 · 116 阅读 · 0 评论 -
细说QT表格类复杂控件用法(TableView/TreeView/ListView)
Qt提供了几种基于模型/视图(Model/View)架构的表格类控件,主要包括QTableView、QTreeView和QListView。这些控件用于显示和操作数据集合,它们之间的主要区别在于它们各自适合表示数据的结构和形式。这里介绍一下各种表格控件的一些用法。原创 2024-06-25 18:51:41 · 217 阅读 · 0 评论 -
使用invokeMethod异步执行QT函数操作
在QT窗口初始化加载的时候如果执行比较耗时的操作,很容易阻塞主界面的显示,导致用户体验差。这时候一般我们可以通过定时器延时加载对应的操作。其实使用QMetaObject::invokeMethod方法也可以实现异步加载,操作更简单效果更好原创 2024-06-22 10:19:28 · 137 阅读 · 0 评论 -
QT高阶-QSS样式表用法大全
Qt Style Sheet(QSS)是Qt的一种强大功能,类似于CSS用于网页设计。通过QSS,你可以定义Qt应用程序中的控件的外观和布局,提供一种简洁且灵活的方式来自定义界面。QSS支持大多数CSS2.1的语法和部分CSS3的特性,使得开发者能够利用熟悉的样式表语法来设计GUI。这里介绍一些使用QSS开发的技巧原创 2024-06-15 14:31:49 · 199 阅读 · 0 评论 -
QML Controls模块-标准对话框用法说明
在QML中,Qt提供了一个名为 QtQuick.Controls的模块,其中包含了一系列用户界面控件,可以用于创建现代化、响应式的用户界面。在QtQuick.Controls模块中,一些控件可以用来调用标准对话框,包括文件对话框、字体对话框和颜色对话框等原创 2024-06-11 19:08:11 · 116 阅读 · 0 评论 -
QML键盘事件的用法和示例
在QML中,键盘事件通常通过Keys对象和相关的事件处理器来管理。处理单一按键的方式比较简单,直接在元素的Keys对象中处理即可。Qt.ShiftModifier Shift功能键。Qt.ControlModifier Ctrl 功能键。Qt.KeypadModifier 小键盘上的功能键。Qt.AltModifier Alt 功能键。Qt.MetaModifier Meta功能键。Qt.NoModifier 没有功能键。原创 2024-06-09 15:03:36 · 61 阅读 · 0 评论 -
QML应用添加网络代理
在QML应用中我们可以通过QNetworkProxy和QNetworkAccessManager类给应用添加网络代理。QNetworkProxy是Qt网络模块中的一个类,用于配置网络请求的代理服务器。通过使用代理服务器,我们可以控制应用程序的网络流量,实现网络请求的转发、监视、和过滤等功能。代理服务器在很多情况下被用于增强网络安全、管理网络流量或绕过地理位置限制。原创 2024-06-06 08:51:42 · 34 阅读 · 0 评论 -
QML拖放事件(Drag-Drop)用法及示例
在QML中拖放事件主要涉及三个组件:Draggable元素、DropArea和Drag事件。Draggable元素: 任何可以设置Drag属性的QML组件。通常,这意味着任何继承自 Item 的组件都可以被拖动。DropArea: 用来接收被拖动组件的区域。它可以定义响应拖放事件的行为,例如接受或拒绝放下的组件。Drag: 一个附加在可拖动组件上的属性,控制着拖动过程中的各种行为,如开始拖动、拖动时的视觉效果等。原创 2024-06-04 08:27:27 · 126 阅读 · 2 评论 -
C++和QML混合编程-C++访问QML元素
QML在处理一些UI显示的时候比较擅长,但当涉及到一些后台业务的时候就比较乏力了。这里介绍一下如何通过C++对QML的能力进行扩展。C++访问操作QML的方式主要分为两种: 1.通过findChild查找QML子元素 2.通过QQmlComponent动态创建元素。原创 2024-05-26 09:58:04 · 353 阅读 · 0 评论 -
QML基本语法介绍
将前后端分离,QML和JavaScript语言主要用于前度UI的方法,后端有C++来完成绘制。将JavaScript和C++分开能够快速迭代开发;原创 2024-05-26 09:15:38 · 219 阅读 · 0 评论 -
QML处理定时器事件
WorkerScript允许程序在一个新的线程里面执行一些脚本操作。这里通过将定时器事件和WorkerScript结合起来实现多线程后台操作。 示例定时器事件每两秒执行一次,并开辟线程将获取的时间信息插入到列表控件中。原创 2024-05-16 18:17:56 · 47 阅读 · 0 评论 -
QML处理各类鼠标事件
在QML应用开发的过程中我们绕不开对鼠标事件的处理操作。处理鼠标事件主要是通过MouseArea元素来实现。这里就介绍一下如何通过MouseArea处理各类鼠标事件。原创 2024-05-16 08:44:06 · 122 阅读 · 0 评论 -
QML开发经验之启动方式-文件路径-屏幕适配
在QML开发的过程中有很多知识点和小技巧看似不起眼,但是如果没能掌握会对开发进度和产品效果产生极大的影响。这里就介绍一下常用的三个知识点,分别是:1.QML启动方式 2.文件地址的访问方式 3.如何适配各种尺寸的屏幕。原创 2024-05-14 20:31:52 · 161 阅读 · 0 评论 -
QML ECMAScript 语法介绍
ECMAScript语言的标准是由Netscape、Sun、微软、Borland等公司基于JavaScript和JScript定义出来的脚本语言标准。可以为不同种类的浏览器环境提供核心的脚本编程能力。在QML中我们通过ECMAScript进行脚本编程,实现各种逻辑运算。这里介绍一下ECMAScript的基本语法。原创 2024-05-14 08:49:33 · 71 阅读 · 0 评论 -
QML元素的布局和定位
QML有三种布局定位的方式分别为定位器(Item Positioner)、布局管理器(Item Layout)、锚定位(anchor)。锚定位在之前的内容中已经介绍过了,主要用于元素之间相对位置的锚定。这里主要介绍一下定位器和布局管理器。原创 2024-05-11 08:48:57 · 86 阅读 · 2 评论 -
QML标准UI控件的用法及示例
QML中有很多标准控件,合理使用标准控件可以大幅提升开发效率,这里介绍一下QML中各种常见的标准控件的用法。原创 2024-05-09 21:43:38 · 78 阅读 · 0 评论 -
QML Model-View-Delegate视图框架
MVC(Model-View-Controller)模式将视图系统拆分为模型、视图、控制器三部分,每个部分都相对独立职责单一。模型(model)负责管理视图的数据并对外提供服务。视图(view)负责内容的呈现以及与用户的交互,控制器负责从模型拉取数据并通知视图更新显示。原创 2024-05-07 19:40:31 · 144 阅读 · 0 评论 -
QML信号槽通信机制用法技巧
QML中实现组件和图元之间的数据通信和关联,同样离不开信号槽通信机制,这里介绍一下在QML中如何使用信号和槽函数。原创 2024-05-07 06:27:49 · 76 阅读 · 0 评论 -
QT信号和槽通信机制的使用技巧
QT中的信号和槽是一种用于实现对象间通信的机制。这种机制通过信号signal和槽slot的连接,实现了一种灵活的事件驱动通信方式。通过使用信号和槽,QT实现了一种低耦合、高内聚的对象通信方式,使得对象之间的交互更加灵活和可维护。 这里介绍一下QT信号和槽通信机制的使用过程中的一些小技巧。原创 2024-04-29 20:42:53 · 45 阅读 · 0 评论 -
QT彻底解决中文乱码问题(代码、普通文件、ini文件、路径)
由于QT程序是跨平台的且中文在不同平台下的编码方式不同,为了让QT程序更好的处理中文,我们需要针对中文进行单独的处理,这里介绍一下QT程序在不同场景下如何处理显示中文。原创 2024-04-29 20:40:14 · 351 阅读 · 0 评论 -
国产操作系统镜像资源汇总
在软件和操作系统国产化浪潮中出现了很多有特色的国产化操作系统,常见的包括银河麒麟、UOS、中科方德等,同时每个操作系统针对不同的芯片架构也有很多版本。这在适配上就会带来很多麻烦,因为我们需要搭建不同版本的开发环境和适配环境。为了解决适配的难题,这里收集了各个版本的国产操作系统镜像资源,方便大家搭建对应的开发环境和调试环境。原创 2024-04-05 11:43:01 · 805 阅读 · 0 评论 -
Qt插件之输入法插件的构建和使用(二)
输入法的主界面本质上是一个QStackedWidget容器,将各个类型的输入键盘插入到容器中,然后根据业务需要切换不同的输入键盘。 主要的输入键盘包括:中文输入键盘、英文输入键盘、特殊符号输入键盘、手写输入键盘。原创 2024-03-08 18:47:05 · 395 阅读 · 0 评论 -
Qt插件之输入法插件的构建和使用(一)
常见的输入法有三种形式: 1.系统级输入法 2.普通程序输入法 3.程序自带的输入法 系统级输入法就是咱们通常意义上的输入法,和操作系统绑定使用系统的输入法框架进行开发,在任何程序当中都可以使用,比如在windows系统下基于TSF/IME框架开发的输入法,在Linux系统下基于fcitx框架开发的框架。此类输入法通用性强功能强大,但开发难度也高。原创 2024-03-06 19:20:17 · 506 阅读 · 0 评论 -
Qt+libhv实现各类网络通信方式(TCP-UDP-HTTP-WebSocket)
为了实现程序的跨进程和跨主机通信,我们通常会采用网络通信进行数据传输。常用的通信方式包括TCP/UDP、HTTP、WebSocket等,这些网络通信方式各有优劣有的是短连接有的是长连接,应用场景也有差异。在实际开发中我们需要掌握各种通信方式的实现方式来应对不同的场景,这里我们介绍一下如何通过QT+libhv库实现各类通信方式。这些功能模块可以很方便的集成到我们的QT项目中。原创 2024-03-03 17:40:00 · 461 阅读 · 0 评论 -
细说MSVC和MinGW生成库的差异及如何相互调用
两个编译器的C++ ABI是不兼容的所以无法识别对方导出的符号完成链接,但是可以用C语言进行中转,C的ABI在所有编译器中都是相同的,也就是说把VC动态库所有导出接口都改为 extern “C” 形式即可,这样生成的动态库,MinGW和MSVC都可以相互链接。由于MSVC生成的静态库和MinGW生成的静态库ABI(Application Binary Interface)无法兼容、使用的标准库也不同(MinGW使用的GNU标准库、MSVC使用的微软标准库),所以两个编译器生成的静态不可以跨编译器相互调用;原创 2024-02-22 19:01:37 · 1259 阅读 · 0 评论 -
QGraphicsView通过鼠标操作来绘制图元
在Visio和MindManager等类似的图元操作软件中,很多时候我们会通过鼠标操作来添加自定义的图元。这里就介绍一下如何在QT的图形视图框架中通过鼠标绘制来添加图元。原创 2023-01-15 10:27:09 · 2838 阅读 · 7 评论 -
在QML委托代理机制中使用C++数据模型
在开发的过程中发现在QML中直接定义操作数据模型比较繁琐费力,不如C++的数据模型好用。这里就介绍一下如何在QML中调用C++定义的数据模型,实现数据模型的混合使用。原创 2022-08-19 20:18:27 · 945 阅读 · 0 评论 -
通过QT管理网络状态和网络连接
QT主要通过以下四个类实现对网络状态和网络连接的管理,四个类分别是:QNetworkConfigurationManagerQNetworkConfigurationQNetworkSessionQNetworkInterface原创 2022-08-12 20:28:14 · 3830 阅读 · 0 评论 -
采用QT进行OpenGL开发(三)着色器编程
在OpenGL中所有的一切操作都是在三维空间中进行的,但是屏幕和窗口都是由二维的像素组成的。所以OpenGL的很大一部分工作就是将三维坐标图元信息转换成屏幕上的二维像素。在OpenGL中这个三维转二维的过程被渲染管道(graphics pipeline)管理着。渲染管道的渲染过程主要分为两个阶段,阶段1将OpenGL的三维坐标转换成屏幕上的二维坐标,阶段2将二维坐标转换成屏幕上的颜色像素。由于二维坐标是非常精确的小数值,而像素坐标是非常精确的整数值,所以阶段2的转换过程中是一个取近似值的过程。...原创 2022-08-01 20:48:47 · 1906 阅读 · 0 评论 -
采用QT进行OpenGL开发(二)绘制立方体
在OpenGL中三维实体会被拆分成一个个小的平面图形来进行绘制。比如我们绘制的立方体,可以拆分成六个平面来进行绘制。这里我们以一个带纹理的正方体来说明一下三维实体的绘制方法。原创 2022-07-28 20:45:38 · 3433 阅读 · 4 评论 -
采用QT进行OpenGL开发(一)绘制平面图形
在QT中进行OpenGL开发的实现方式有很多种,最简单直接的方式就是通过子类化QOpenGLWindow实现OpenGL的绘制和渲染。QOpenGLWindow是用来显示OpenGL的窗口和QT中的其它的标准窗口没有什么区别,我们可以将它和其它的QT控件组合到一起使用。QT通过QOpenGLContext类来保存OpenGL的上下文状态从而对OpenGL的渲染和绘制过程进行控制。我们的所有绘制和渲染操作都是针对当前的上下文的,可以通过切换上下文实现不同状态之间的切换。在进行渲染绘制的时候一定要把对应的上下原创 2022-07-26 19:08:54 · 4296 阅读 · 0 评论 -
通过QT实现C++和JavaScript混合编程
C++是编译性语言,修改了代码之后必须进行编译才能生效。当项目比较大的时候,项目的编译时间可能很长,如果仅仅因为一个小修改就需要将整个项目编译一遍,开发效率会很低。而JavaScript是脚本语言,修改之后不需要编译,能立即生效,这就能弥补C++在大型项目中的不足,从而提升开发效率。在大型项目中我们一般将项目拆分成对效率要求比较高且比较稳定的引擎模块,以及业务变动比较大需要经常修改的业务模块。对于引擎模块由于比较稳定我们通过C++实现,而对于一些独立的业务模块由于经常需要变动和修改我们通过JavaScr原创 2022-07-22 20:50:39 · 2709 阅读 · 0 评论 -
QGraphicsView图形视图框架使用(六)图元动画
之前的图形框架应用中用到的图元都是静态的,在实际开发过程中纯静态的图元肯定是不够用的,特别是在一些2D游戏类的应用中,很多图元都是动态的。这里就介绍一下在图形视图框架应用中如何实现图元动画,图元动画主要的实现方法有三种,分别如下:1.使用定时器2.使用动画框架3.调用Scene的advance()方法...原创 2022-07-20 20:48:39 · 2220 阅读 · 3 评论 -
QGraphicsView图形视图框架使用(五)渲染优化
当视图中的复杂图元比较多的时候,图形框架应用的性能会下降很多。这时候,我们就需要对默认的渲染策略进行调整从而提升用户体验。图形视图框架的优化方向主要分为以下几种:1.调整图元的二叉树结构2.对图元的绘制函数进行缓存3.优化视图渲染4.采用OpenGL进行渲染......原创 2022-07-14 20:46:09 · 3030 阅读 · 1 评论 -
QGraphicsView图形视图框架使用(四)自定义Item
QGraphics View允许我们通过子类化QGraphicsItem实现自定的图元。这里就介绍一下自定义图元的实现方式和一些需要注意的问题。这里以一个正弦波曲线图元为例进行说明。原创 2022-07-13 20:57:53 · 2835 阅读 · 1 评论 -
QGraphicsView图形视图框架使用(三)位移变换和图元定位
当视图框架中的图元比较多且位置比较散乱的时候,为了操作某个特定的图元,我们需要对图元进行位移变换和定位,而从更加方便的操作管理图元。这里就介绍一下图元的位移变换和定位。原创 2022-07-11 21:01:31 · 2249 阅读 · 0 评论