自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 收藏
  • 关注

原创 Qt_绘图

Qt提供了DIY度极强的绘图功能,目的就是解决在特殊场景时,使用系统提供的控件无法达到预期的效果。Qt的绘图功能提供了相关的方法,允许开发者在界面中绘制任意的图形形状,以完成更复杂的界面设计。

2024-10-01 22:03:03 764

原创 Qt_QSS介绍与使用

Qt中的QSS(Qt Style Sheets)作用是美化界面,他可以对控件的样式进行设计,比如控件的颜色、字体、位置、边框等属性。QSS是依照CSS而来的,而CSS是网页前端开发中最重要的一个工具,不过QSS只支持部分CSS属性,因此QSS会比CSS更简单⼀些。值得注意的是:当通过QSS设置样式和通过C++代码设置样式冲突时,QSS的优先级会更高。

2024-09-30 17:11:36 677

原创 Qt_网络编程

网络协议是每个平台都必须遵守的,只是不同的平台所提供的网络API不相同,而Qt具有跨平台性,因此Qt对网络编程也封装了一套自己的API。值得注意的是,在使用Qt进行网络编程之前, 需要在项目中的.pro文件中添加network模块。

2024-09-27 21:22:31 934

原创 Qt_线程介绍与使用

线程是应用程序开发非常重要的概念,在Qt中,用QThread类来实现多线程,将线程有关的各种函数都封装到这个类中(包括线程执行函数),方便通过该类对线程进行控制。若要创建一个线程执行某些任务,则需要自定义一个继承QThread的类,重写线程执行函数让该线程执行我们期望的任务。

2024-09-26 20:34:09 1114

原创 Qt_文件操作

文件操作是程序中的一个重要概念,数据的存储和读取都离不开文件操作。Qt具有强大的跨平台性,因此他提供了跨平台的文件操作能力。Qt中将文件抽象成类,通过这些类可以对文件进行相关操作,如:文件打开/关闭、文件IO、文件信息获取等。

2024-09-25 20:22:10 1251

原创 Qt_事件的介绍

在Qt中,事件指的是由程序内部或者外部设备产生的事情或动作,比如当程序中定时器的时间到了,就会发出一个事件,这就是内部产生的事件,当鼠标、键盘进行某些操作所产生的动作,这就是外部产生的事件。在Qt中事件被抽象成一个类,所有的事件都继承自QEvent类

2024-09-24 22:32:13 1142

原创 Qt_对话框QDialog的介绍

在Qt中,对话框是图形化界面不可缺少的一部分,他的类是QDialog。对话框的作用是让用户处理临时、简洁的任务,通常让用户进行一些选择。对话框本质也是一个独立的窗口,他分为两类:1、模态对话框,2、非模态对话框。Qt中内置一些可以直接用的对话框,常用的有以下几种:QFiledialog(⽂件对话框)、QColorDialog(颜⾊对话框)、QFontDialog (字体对话框)、QInputDialog (输⼊对话框)和 QMessageBox(消息框)。当然还允许开发者继承QDialog类实现自定义对话框

2024-09-22 20:58:27 1112

原创 Qt_窗口界面QMainWindow的介绍

Qt的窗口界面是通过QMainWindow类实现的,该类继承自QWidget。相比于QWidget,QMainWindow生成的界面更像是一个窗口,因为该界面的布局已经设置好了,分成五个部分:1、⼀个菜单栏(menu bar),2、多个工具栏(tool bars),3、多个浮动窗⼝(dock widgets),4、⼀个状态栏(status bar),5、中心部件(central widget)。开发者只需要在这框架中加入相关控件就能构建出一个窗口了。QMainWindow窗口界面示意图如下:

2024-09-21 22:40:41 1568

原创 我的创作纪念日

我的创作纪念日

2024-09-20 09:27:56 1164

原创 Qt_布局管理器

使用Qt时,在没有布局管理器(Layout)概念之前,在界面上创建控件都是用“绝对定位”来设置的,即调用setGeometry或move函数摆放,或者直接在ui文件中对控件进行手动的摆放,这些方式都会导致界面上的控件摆放存在偏差,影响整体美观。因此引入布局管理器机制,将界面上的控件都直接放到布局管理器下,布局管理器会自动对这些控件进行位置大小的调整,让整个界面看起来更加规整。

2024-09-19 21:26:28 876

原创 Qt_多元素控件

在Qt中,控件之间若是以复合的形式存在界面上,称之为多元素控件。相反,控件之间若是以彼此的形式存在界面上,称之为单元素控件,换句话说,多元素控件中可以存放其他控件。相比于单元素控件,多元素控件提供了丰富的界面显示以提高用户的体验度,还拓宽了开发者对复杂界面设计的范围,可以让界面提供更多的功能,让代码更具封装性。

2024-09-18 22:06:38 1321

原创 Qt_输入类控件

在Qt中,为了进一步实现界面与用户的交互,可以使用输入类控件,输入类控件可以获取用户输入的信息,从而将该信息传递给程序做进一步分析。输入类控件作为界面中最重要的控件,因为实际中使用计算机,必须得有输入框,否则用户是无法使用计算机的。

2024-09-17 16:55:03 811

原创 Qt_显示类控件

在Qt中,显示类控件通常是给用户传递一些文本信息或图片信息,以达到和用户交互的目的。虽然显示类控件的作用看起来如此简单,但是其拥有各式各样的属性,并且细节很多,所以在进行设计显示类控件时需要特别注意。

2024-09-15 20:37:33 1026

原创 Qt_按钮类控件

按钮类控件是Qt中最重要的控件类型之一,该类型的控件可以通过鼠标的点击,或者键盘的按键触发信号。常用的按钮有:1、单击按钮,2、单选按钮,3、多选按钮,根据不同的场景选择合适的按钮。这些按钮的功能大同小异,原因就是他们都继承自QAbstractButton类。

2024-09-14 15:48:38 998

原创 Qt_控件的QWidget属性介绍

控件是Qt中非常重要的概念,在Qt中所有的控件都是直接或间接继承自QWidget类。一个完整的界面是由多个控件组成的,因此开发图形化界面就离不开控件。控件英文名为Widget,在Qt中,内置控件包含但不限于按钮,文本、单行输入框,多行输入框,滚动条,下拉框等。并且Qt支持自定义控件,这让开发者得以实现各式各样的DIY控件设计。

2024-09-13 17:35:28 763

原创 Qt_自定义信号

虽然Qt已经内置了大量的信号,并且这些信号能够满足大部分的开发场景,但是Qt仍然允许开发者自定义信号,给开发者提供了足够的DIY设计空间。

2024-09-11 20:51:02 1294

原创 Qt_信号与槽

信号与槽是Qt中一个重要概念,他解释了用户对界面的操作产生不同效果的原因。信号是由某个信号源(控件)发出,槽表示收到信号后所执行的具体动作,信号与槽相互结合使用,就可以让界面实现各式各样的DIY效应。

2024-09-11 16:18:29 1567

原创 Qt_QWidget的基本使用

使用Qt Creator新建一个QWidget项目,QWidget本身就是一个控件,只不过该控件上可以存放其他的控件,QWidget是生成图形化界面的一个基础条件。生成一个带有控件的界面有两种方式:1、图像化的方式,2、代码的方式。然后对控件进行分析,观察当控件被创建出来时,其他文件的内容是否发生改变。

2024-09-10 16:00:47 930

原创 Qt_了解Qt Creator

Qt Creator作为Qt的集成开发环境(IDE),在进行图形化界面开发时,开发者主要与其进行交互,所以了解Qt Creator是开发者使用Qt开发最重要的一步。

2024-09-09 22:50:15 1594

原创 Qt_环境搭建

Qt的常用开发环境有三个:1、Qt Creator,2、Visual Studio,3、Eclipse。其中Qt Creator是一个较为轻量级的跨平台集成开发环境(IDE),相对于其他两个开发环境他更适合日常的学习,因此本文主要介绍Qt Creator的搭建。

2024-09-09 17:21:37 1172

原创 Qt_概述

Qt是一个应用程序开发框架,他具有跨平台性质,主要使用C++语言进行编程,Qt的开发逻辑将面向对象思想发挥到极致。Qt的主要功能是为开发者提供了图形用户界面(GUI)的开发,即面向客户端的开发。Qt提供了大量的控件样式,开发者通过组合这些控件,开发出DIY度极高的艺术界面。Qt对于控件的使用不仅局限于代码逻辑,还可以直接将控件进行拖拽到界面上,这种清楚明了的方式大大降低了界面的维护与开发。

2024-09-09 15:12:03 1185

原创 网络通信应用层协议-序列化与反序列化

在进行网络通信时,应用层协议是需要程序员手动定制的,序列化与反序列化是对协议进行字符串形式的转换。应用层协议表示发送端和接收端共同遵守的规则,依照这个规则,通信的双方才能够分析出传输数据的真正含义,只有理解了数据的真正含义,才能对数据进行处理,因此应用层协议在网络通信中非常重要。传输层协议为TPC\UDP,网络层协议为ipv4\ipv6,这些协议都是设置好的,而应用层协议需要程序员手动实现,传输应用层协议需要进行序列化与反序列化。

2024-07-26 10:06:28 745

原创 Linux_实现TCP网络通信

在Linux下,实现传输层协议为TCP的套接字进行网络通信,网络层协议为IPv4,需要用到的接口如下:实现服务器的接口有(socket、bind、listen、accept、read、write),实现客户端的接口有(socket、connect、write、read)。实现方式:因为网络通信的本质是进程间通信在云服务器上创建一个服务器进程和一个客户端进程,服务器进程先启动,然后让客户端链接到服务器上,至此客户端可以向服务器发送消息,并且服务器收到消息后可以给对方反馈信息。

2024-07-24 16:49:30 977

原创 Linux_实现UDP网络通信

在Linux下,实现传输层协议为UDP的套接字进行网络通信,网络层协议为IPv4,需要用到的接口有以下4个:socket、bind、recvfrom、sendto。具体实现方法:在云服务器上创建一个服务器进程和一个客户端进程,让客户端向服务器发送消息,并且服务器收到消息后可以反馈给对方。

2024-07-23 22:33:31 1054

原创 网络编程套接字socket

网络编程中的套接字(socket)是实现网络通信的关键,换句话来说,套接字像两个端点,而发送方与接收方就是通过这两个端点进行通信的,socket的意思是插座,表示插头和插座连接上后,即发送方和接收方连接上了,然后把电流通过插座流向插头对标发送方与接收方建立了链接。

2024-07-23 16:54:35 1077

原创 计算机网络通信基础概念

计算机网络通信是当代最重要的技术之一,它使得纵使相隔千里的两台计算机也能进行彼此通信,通信的本质是数据传递,网络通信即数据以网络为媒介传递给各个计算机。网络通信可以让全球计算机进行交流,全球计算机的硬件种类之多且操作系统各有所类,能够让这些彼此之间存在差异的计算机相互通信,最根本的原因就是让他们都遵守一个规则-网络协议。

2024-07-23 09:59:12 903

原创 C++_单例模式

在C++中有许多设计模式,单例模式就是其中的一种,该模式主要针对类而设计,确保在一个进程下该类只能实例化出一个对象,因此名为单例。而单例模式又分为饿汉方式和懒汉方式,饿汉方式指的是只要发出了对该类的需求,就会实例化对象。懒汉方式指的是即使发出了对该类的需求,但是不会立刻实例化对象,等到真正用到该对象时才会实例化对象。

2024-07-21 17:29:49 2453

原创 Linux_实现线程池

在Linux下实现一个线程池,线程池就是创建多个线程,然后对这些线程进行管理,并且可以发放任务给到线程池,让线程池完成任务。

2024-07-20 11:24:53 897

原创 Linux_生产消费者模型

使用生产消费者模型的原因如下:生产消费者模型常用于多线程并发式执行流,该模型具有同步与互斥机制。该模型的核心点在于用一个容器作为生产者和消费者相互通信的桥梁,使得生产者和消费者不直接进行交互,降低了生产者与消费者之间的强耦合度。好处在于生产者生产数据后即使消费者不来拿这个数据,生产者也可以继续生产,并且后续生产的数据不会覆盖之前的数据,只有当容器满了,生产者才会阻塞。只要容器内有数据,消费者就可以从容器中拿数据,无需等待生产者一个一个的生产数据。

2024-07-19 18:29:05 876

原创 Linux_线程的同步与互斥

在Linux下,线程是一个很重要的概念,他可以提高多执行流的并发度,而同步与互斥是对线程的一种约束行为,比如当多个线程都访问同一个资源时,若不对该资源加以保护则会导致意料之外的错误。具体的保护措施是让线程访问共享资源时具有互斥性,即当一个线程访问时别的线程无法访问,通常用互斥锁来实现。而同步是为了让多个线程具有一定的顺序来访问共享内存,保障每个线程访问资源的机会是一样的。

2024-07-18 22:08:49 1243

原创 Linux_线程的使用

线程是操作系统进行调度的基本单位,他属于进程的子集。在Linux下,通过实现轻量化进程来实现线程,因此线程具有进程的相关特性,比如线程必须有自己的代码资源,有属于自己独立的数据空间,并且同一个进程下的线程所看到的地址空间是属于该进程的,因为创建线程实际上就是在该进程下创建task_struct结构体(该结构体的作用是方便操作系统对该执行流的调度),这些task_struct结构体跟进程共用空间资源,只不过线程可以在单一进程执行流的基础上实现多执行流并发式的运行代码,以至于提高cpu的效率。

2024-07-18 10:58:11 978

原创 Linux_进程信号

在Linux下,为了让正在运行的进程做出相应动作,通常会给该进程发送信号以达到目的。之所以对象事物能根据不同信号做出不同动作,是因为对象事物认识该信号,并且知道该信号对应的行为是什么,也就是说,进程认识信号并且清楚收到信号后该如何做,即信号的处理方式属于进程内置功能的一部分,并且进程收到信号到处理信号也存在时间窗口。

2024-07-15 20:22:26 972

原创 Linux_实现简易日志系统

在Linux下实现一个日志系统,该日志系统主要用于打印和记录程序的格式化信息,还可以对信息做分析处理,比如把信息分为五种类型:正常运行信息、测试信息,警告信息,错误信息、致命信息,当然还可以显示信息产生的具体时间,并且能够对这些信息进行存档归类。

2024-07-07 10:06:43 1137

原创 Linux_共享内存通信

在Linux下,有一种进程间通信方式(IPC)名为共享内存,他是IPC中通信最快的方式(通信方式为全双工),因为他直接在物理内存上创建一块区域并且映射在进程的地址空间中,使得进程使用共享内存就如同直接使用动态申请的空间,因此通信过程少了内核的系统调用步骤,以至于相比于其他IPC模式速度更快,不过也正是因为在通信时不受内核管辖,导致共享内存不具备同步互斥机制,因此需要用户手动处理同步互斥问题。

2024-07-05 21:53:36 708

原创 Linux_进程池

在Linux下,进程池表示把多个子进程用数据结构的方式进行统一管理,在任何时候都可以对进程池里的子进程进行任务发放,即进程池可以实现并发执行流,能够同时执行多个任务,相比于单进程单一执行流,进程池在处理多任务的效率上有了显著提升。

2024-07-04 20:48:15 1124

原创 Linux_管道通信

在Linux下有一种概念叫做管道,管道的作用是实现进程间通信功能,其本质是一个文件,该文件也被当成进程通信的缓冲区,即一个进程往缓冲区内写数据,另一个进程从缓冲区内读数据,这一过程称之为进程间通信。管道分为两种:匿名管道、命名管道,匿名管道只限于含亲缘关系的进程间通信,而命名管道可以让两个无亲缘关系的进程进行通信。

2024-07-03 16:49:40 956

原创 Linux_动、静态库

在Linux下大部分程序进行编译时,都会接触静态库或动态库,因此动静态库在Linux下是个很重要的概念,他们都是文件,其中静态库后缀是.a,动态库后缀是.so。动静态库里保存的是函数的具体方法,他们的不同点在于链接阶段时,静态库会把方法直接拷贝到程序中,而动态库会把方法加载到内存中,并且在可执行程序中记录了动态库在内存的地址,以便在运行时能够让可执行程序从内存中定位具体方法。

2024-06-30 19:48:24 711

原创 Linux_软硬链接

在Linux操作系统中,有软链接和硬链接,他们是一种特殊的文件引用,主要用于与目标文件建立链接关系从而生成新的链接文件,并且访问该链接文件就能访问目标文件,给用户提供了多种访问文件的途径,方便了用户的使用,合理使用软硬链接能够有效的提高系统的效率。

2024-06-23 15:56:11 1057

原创 Linux_内核缓冲区

Linux下的内核缓冲区存在于系统中,该缓冲区和用户层面的缓冲区不过同一个概念,用户层面的缓冲区称之为用户缓冲区,而系统中也有自己的缓冲区即内核缓冲区,两者虽然同为缓冲区却差之毫厘谬以千里,了解内核缓冲区前先谈谈用户缓冲区。

2024-06-22 17:18:15 1787

原创 Linux_文件IO

IO是Input/Output的首字母缩写,表示输入和输出,在Linux下一切皆为文件,使用文件无非只有读和写两种状态,即读对应Input,写对应Output,构成Linux下的基础IO。而对一个文件进行读写操作的前提是使用库函数、系统调用函数先打开文件,然后再进行一系列的文件操作,本文着重介绍这些接口的使用。

2024-06-21 20:42:10 1161

c语言实现井字棋,可以随意更改棋盘的大小

使用c语言实现井字棋游戏,并且在传统的3*3棋盘的基础上,增加了扩大棋盘的功能,达到了一定的优化效果。

2023-09-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除