自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 qt QFile文件操作处理,QFileInfo文件信息读取的简单介绍

QFile类用于文件操作,对文件进行读写操作,可读写文件,二进制文件和qt资源文件.处理文本文件和二进制文件可使用QTextStream类和QDataStream类,处理临时文件可以使用QTemporary,获取文件信息可以使用QFileInfo,处理目录可以使用QDir,监视文件和目录变化可以使用QFileSystemWatcher.使用QFileDialog::getOpenFileName()就可以打开一个模态文件对话框,对文件进行选择.选中文件,则返回一个文件名目录.是否为文件isFile(),

2023-12-18 17:28:54 1604

原创 qt 正则表达式简单介绍

捕获匹配的文本.cap()函数捕获的文本不会捕获到空格.cap(0)捕获全部匹配的文本.cap(1)捕获匹配到的第一个文本.cap(2)捕获匹配到的第二个文本.下面代码,正因为cap()不会捕获到空格,所以匹配到的文本226 cm中,cap(1)捕获到226;\w表示匹配一个单词字符,包括任意字符数字下划线,即A~Z,a~z,0~9中任意一个.{3,8}表示最少匹配3次,最多匹配8次.A-Z表示可匹配范围大写字母A到Z.不紧跟才匹配.replace()替换字符.indexIn()找出匹配的字符位置.

2023-12-16 01:37:58 1409

原创 qt 标准对话框的简单介绍

以上是关于标准对话框的一些粗略的讲解,对于使用的一些Label标签,QLineEdit行编辑器,QPushButton按钮的一些创建使用就都没有讲解,包括还有Qt 的一些核心特性信号与槽函数的连接,桌面的布局......都没有讲解.若不能很好理解可结合下面的代码参考一下(把代码贴出来也是为了方便我以后查阅).标准字体对话框QFontDialog,使用getFont()设置字体,执行一个模态字体对话框并返回一个字体QFont.如果用户单击OK,则返回所选字体。//不要在文件对话框中解析符号链接。

2023-12-14 12:00:00 1175

原创 qt 容器QVector,QMap,QHash的常见使用与该迭代器的简单介绍

需要注意的是,如果一个键映射多个值,使用方式2并不能添加一个新的键值对,它只会在同一个键的键值对上,把前面相同键的值覆盖掉.所以使用insertMulti()函数才会添加新的键值对,而不会覆盖原有的键值对.通过value()函数,参数填写键值key,就能打印所有相同键的值value.即一个键key的对应的多个值value.使用迭代器访问的方式与上面一样.第一个QString数据类型值是键key,第二个QString数据类型值是值value.一个键对应一个值,以key字母顺序(A~Z)存储数据.

2023-12-11 12:30:00 963

原创 qt 链表QList,QLinkedList的常见使用

QLindedList类继承自QList,与QList的区别在于,QLindedList不能使用at()和下标的方式[]访问数据,那既然QList这么好,还要QLindedList干嘛?从后往前读,反遍历.toBack()把迭代器定位到最后一个元素的后一个位置(不指向元素);previous()指向前一个位置(有元素).从前往后读,正遍历.toFront()把迭代器定位到第一个元素的前一个位置(不指向元素);QList类-------------------------------------------

2023-12-07 18:05:01 1685

原创 qt 容器QStringList的常见使用

4.foreach遍历.遍历链表weekList,用QString类型的变量 s 临时存放里面的元素.这也正好印证了QStringList里面存放的元素是QString类型.5.使用STL风格迭代器访问.for循环中,只要迭代器没有指向链表的最后一个元素的下一个位置(end()),就继续往后读(++it).8.insert(): 往链表中插入元素.参数:指定插入链表的位置,指定插入的QString类型字符串.3.for遍历链表.使用函数 at(),传入的参数就是元素的位置.下表需要从0数起.

2023-11-25 12:12:17 1231

原创 qt QString常用方法

QString 在字符中插入字符,函数insert().insert()第一个参数是插入的起始位置,下标从0数起;at() 返回索引处的字符.该QString字符串有字符'c' 'r' 'a' 'b' '\0'.下标从0数起,at(2)就是定位到了字符a,因为at()函数返回的是QChar字符.所以用该字符变量c接收.方式2:arg()函数.QString("%1%2%3%4%5").arg()...的写法不需要指明这些数据类型的替代符,只需要明确有几种数据段即可.像下面的就分成了5段.

2023-11-24 23:04:40 1607

原创 qt QString字符串常用转换

QDateTime类提供日期和时间函数(官文:The QDateTime class provides date and time functions.)使用fromString()函数接口实现.传入QString类型字符串,同时还要指定格式.数字number转QString字符串.数字转QString字符串可2种方式,使用number() setNum()转换.const char*初始化QString.即const char*类型转QString字符串类型.const char* 转QString.

2023-11-24 20:45:30 774

原创 qt QString隐式共享机制

当增加新的变量指向该数据块时还是+1,这样2个变量就能同时共享同一个数据块"hello",这样就不用再分配一块内存.当其中一个变量取消对该数据块"hello"的引用计数去指向另外一个数据块(数据块"hi"),对数据块"hello"的引用计数就相应的-1,对数据块"hi"的引用就+1.如下图:变量s0,s1同时指向数据块"hello",则该数据块的引用计数为2;当变量s0指向了数据块"hi"后,数据块"hello"引用计数为2-1=1,因指向了数据块"hi",则数据块"hi"的引用计数增加为1.

2023-11-24 02:49:05 365

原创 qt 简单了解QHBoxLayout QVBoxLayout QFormLayout水平,垂直,表单布局管理器.

这里值得注意的是,2个单选按钮(QRadioButton)同时放进一个水平布局管理器(QHBoxLayout)中,相当于放进了一个分组器中,此时,2个单选按钮只能同时选中一个.水平布局管理器,顾名思义:放在这个水平布局管理器中的3个控件,只能均匀的排列成一行.代码如下。QHBoxLayout水平布局,QVBoxLayout垂直布局,QFormLayout表单布局管理器,是常用的布局管理器,是用代码编写应用界面必不可少的功能类.不通过设计模式布局界面,而是使用代码把控件,标签,行编辑器等,进行桌面布局.

2023-11-23 02:44:09 388

原创 qt QLineEdit显示模式,掩码

值得注意的是,反杠字符\ 将下表中的特殊字符正常显示作用分隔符.分号;@表示用字符@替代显示输入的字符,起到保密的效果.这些掩码不一定说非要记下来,只需要在用到的时候查看会用就行.在ui界面中,控件Line Edit 的属性设置echoMode,有4个状态枚举值,如下是摘抄的官方英文文档,并加以翻译.在编辑时显示输入的字符,否则显示与Password相同的字符。显示平台相关的密码掩码字符,而不是实际输入的字符.只能输入十六进制字符(0-9,a-f,A-F)只能输入A-Z,a-z,0~9。

2023-11-21 02:07:52 136

原创 qt 模态对话框,实现阻塞其他窗口

模态对话框,就是阻塞同一应用程序中其他可视窗口的输入的对话框.你必须完成当前对话框中的操作,才能对其他的窗口进行操作,否则你点击其他的窗口是没有任何反应的,你只能完成当前窗口操作.这相当是一个操作窗口顺序的问题.2,w1.setModal(true).调用该方法参数为true(条件真),此时就能达到阻塞其他窗口的目的.比该窗口晚出现的窗口就会被当前窗口阻塞.必须先操作当前窗口.3,w1.exec().该方法使当前窗口进入循环,成功模态,你结束了当前窗口循环时,才能对其他窗口进行操作.

2023-11-20 03:30:47 993

原创 qt QWidget窗体状态,风格属性设置

2.setWindowState()用于设置窗口状态类型的最大化,最小化....它的函数接口: void setWindowState(Qt::WindowStates state);窗口的类型有许多,常用的Qt::Dialog对话框风格,Qt::FrameLessWindowHit无边框窗体风格,Qt::Widget默认窗口风格,Qt::Cover覆盖窗口.....使用操作符或 | ,表示同时定义窗体多种风格类型.4.move()用于设置窗口的初始位置,即窗口刚刚跳出来的位置.同上也有2种方式.

2023-11-15 01:14:53 272

原创 qt连接,断开信号与槽

在qt中,当用户操作当前窗口部件时,需要其他窗口部件响应时,使用信号与槽的机制,会更灵活,更方便.信号与槽是qt的核心功能之一,它是一种松耦合的关系.发送信号的只管发射信号,接收信号的也只管接收,它不需要知道谁发送,谁接收,因此,这种机制更灵活便捷.一个信号Comeon(),连接了ComeChina(),ComeHuaxia() 2个槽方法.也就是说,发送一个信号,就会执行2个槽方法 ComeChina(),ComeHuaxia()(多个槽方法).表示断开当前this对象的所有信号与所有槽的连接.

2023-11-10 03:56:25 656

原创 qt加载资源文件

完成上面的操作后一定要记得按CTRL+S保存,否则会加载资源失败.接下来在ui界面选中该label适当的放大(如左边箭头指向),并把里面的默认文本删除.第2步,点击QLabel中的pixmap属性右边的三个点...按钮,从跳出的对话框中点击resource root,再点击右边的login.png图片.点击OK即可.如果没有显示图片,(第2张图)点击左上角的刷新按钮.这样就能把背景图片资源加载出来了.1.从未加载过资源文件.2.加载过资源文件,在原有的资源文件上再加载一些新的资源.

2023-11-06 02:54:30 354

原创 使用qt实现科目一登录考试系统

1.账号密码登录界面.我们使用的是qt的设计模式,直接在ui文件上通过拖拽控件QLabel,实现了背景图,账号,密码文本的渲染.QLineEditor,实现的账号密码的文本输入.QPushButton实现了登录,取消控件按钮的布局,通过信号与槽的机制,实现了按钮和槽函数之间的链接,使对象(按钮)与对象(当前窗口)之间的链接变得简单高效.在开始码代码前,我们还要加载资源文件Resources,把背景图片放到相对目录,即和下面的文件放在同一个目录(关于加载资源的细节,下次有空再更新).下面是完整的源码实现.

2023-11-04 23:28:46 347 6

原创 创建一个基础的qt项目

在这里说一下,如果大家是刚接触到qt,对这里面的很多类,函数,接口不熟悉,可以多多的参考官方文档,但是小伙伴们会说都是英文啊.我一看英文就犯困.没关系!我们可以使用有道词典翻译,其实文档看的多了,你就会慢慢的觉得它们都很亲切,很多的单词在计算机领域都是固定使用的,并不会有太多的其他解释.还有一点就是,虽然qt给我们提供了很多的接口,函数高度封装了,但是很多底层的的东西,我们能了解还是要多了解一下才行,很多底层原理不知道,那都是虚的. 记得,多多看帮助文档!下面是一些基础代码以及实现登录简单界面的部分代码.

2023-10-31 20:33:39 52

原创 qt5设置编译路径

2.点击调试器——>概要——>添加qt源码——>选择你安装的qt所在的位置(这个位置根据你把qt安装在哪个位置决定) 5.14.1/Src——>选择文件夹——>点击ok即可。1.点击工具——>选项——>构建和运行——>概要——>Defult build directory选项,修改为./%{CurrentBuild:Name}——>点击ok即可。

2023-08-28 12:45:58 1252

原创 qt6创建有工程文件.pro的新项目

第一步,点击创建项目,或者点击左上角的文件——>add new...选择应用程序Application(Qt),桌面应用程序Qt widgets Application.选择QDialog作为基类,类名Class name可随意取,顾名思义就行。最后点击下一步——>完成。这样就创建了一个带工程文件.pro的新项目文件了。选择可生成.pro工程文件的qmake选项。选择MinGW 64-bit的编译组件。

2023-08-28 12:27:21 185

原创 C++,函数指针

/方式1,按普通指针解引的方式进行调用,(*fp)等fp同于intCompare;//给函数指针提供的实参变量,仅为调用示例需要,无实际意义。第一步,函数指针的定义,首先把函数声明移动过来,把函数名改成(*函数指针名),今天来简单的了解一下函数指针,下面有俩个供调用的示例函数.//在qsort排序函数中使用函数指针intCompare。fp(&x,&y);//方式2,直接调用。第二步调用,这里有俩中方式可供使用。//使用 qsort。

2023-06-05 21:38:42 71

原创 C++,智能指针详解

在我们使用指针的时候,在分配了内存之后我们有时会忘记了释放内存,但造成内存泄漏对于一个程序员来讲简直是一个巨大的噩耗.泄漏一点点内存是没啥影响,但如果是在一个循环中不断的消耗内存呢?auto_ptr 是C++98 定义的一个智能指针模板,他为我们提供了更为有效的对指针对象的管理,它可以将new获得的直接(间接)地址交给它来管理.当我们使用的对象生命周期结束时,它会自动的调用析构函数使用delete释放内存,这时候你再也不用担心内存泄漏了.//不建议将智能指针定义为指针。为什么要使用智能指针?

2023-06-04 20:50:53 56

原创 引用与指针&&指针引用与二级指针

说起引用,相信大家都会和指针联想到一起,确实!引用和指针存在千丝万缕的关系。引用,可以看作是一个已经定义变量的别名,俩者虽然看起来有点差异,但是引用呢,他的底层实现其实也是用指针实现的。使用引用是为了方便我们程序员的编码实现,有助于阅读代码,而不用使用更复杂的指针,它在某些方面的应用可以说是比指针更加的“得心应手”。

2023-05-12 15:03:12 144

原创 C++,顺序表的添加,插入,删除

需要注意的是,在往中间插入一个元素的时,该位置往后的连续元素都要相应的往后移动一个元素的位置,所以我们得先把最后面的元素往后移动一个元素位置,前面的元素再依次的往后移动;同样的,删除元素的时候,中间就出现了一个空的位置,此时后面的元素也要相应的往前移动.顺序表是一种简单的线性结构,他和我们之前使用的数组非常相似,在逻辑上相邻的数据在存储位置上也是相邻的,数据之间一个挨着一个,中间不允许有空值,可以在尾部添加元素,插入元素,删除元素.它的常用的几个功能是:尾部添加元素,插入元素,删除元素。

2023-04-13 00:35:23 414

原创 C++ vs2022静态库的制作及调用

1.把这个静态库文件放到需要链接项目的同级目录下,点击该项目->属性->连接器->输入->附加依赖项.把刚刚生成的静态库文件Staticlib1.lib写进去.->确定->应用,就可以调用这个静态库文件了.2.完成后,进入到编辑界面,此时,编译器会自动生成头文件pch.h,framework.h和俩个源文件pch.cpp,framework.cpp,我们把它们都删除,导进自己需要生成的头文件和源文件.这是我们导入的需要用来制作静态库的头文件和源文件hacker.h,hacker.cpp.

2023-02-27 16:01:35 2052

原创 使用文件流读取txt文件数据,统计各个数据出现的次数

这是一个统计数据出现次数的函数,我们每次读取一行的7(#define NUM 7)个数据进行处理,进行多次循环直到读完所有数据……使用文件流 ifstream 定义一个对象对数据进行读取……在结束使用该文件流时,关闭文件流 file.close();……把这个函数写在这里了,方便日后用到时查找……bool ttast(const char* fileName, int* ball, int ballCount) { ifstream file;//文件流 int resu

2023-02-22 01:45:27 432

原创 strerror_s

char *_Buffer char数组,保存错误信息。size_t SizeInBytes 数组的大小,防止越界。int ErrorNumber 错误号。

2023-02-21 00:04:37 300

原创 解决清空输入缓冲区,函数cin.ignore()的异常问题

在数据输入错误的时候,我们需要重新输入数据,首先要清除输入缓冲区里面残留的数据,此时我们可以使用函数cin.sync(),但很不幸的是,这个函数在vs中是无效的(在vc++2010可以),这个函数在vs中无效,我们就使用函数 ignore().ignoer()函数它有俩个参数,示例:第一个参数表示最多清除的字符个数(最多扔掉10个数据),第二个表示直到遇到字符'1',就停止丢弃(不管有没有达到10个字符),字符'1'本身也被丢弃.

2022-09-15 15:55:50 315

原创 C++文件输入流和输出流的基本使用

ifstream 是专门用来定义文件的输入流对象,这时候可以不写文件打开方式(默认为ios::in),int main(){int age;//定义了一个文件输入流对象//文件默认为 ios::in 打开方式if (inFile.eof()) { //判断文件是否结束break;}}// 关闭打开的文件return 0;}在读取文件的内容的时候,需要使用符号 >> 把文件的内容读取到变量name,age中,

2022-09-12 01:41:22 2556

原创 EasyX中函数loadimage和putimage形式参数表示的意思

在加载图片时经常使用的这俩个函数,今天把它的形参所表示的意义简单了解一下。void loadimage(IMAGE *pDstImg,//保存图片的IMAGE对象指针LPCTSTR pImgFile,//图片文件名int nWidth = 0,//图片的拉伸宽度int nHeight = 0,//图片的拉伸长度bool bResize = false);//是否调整IMAGE的大小以适应图片void putimage(int dstX, int dstY,//...

2022-07-31 10:48:11 1925

原创 VS2022背景图片设置

我们很多的小伙伴,都喜欢定义自己喜欢的图片作为编码的背景,那么怎么设置呢?设置VS2022背景图片,首先点击管理拓展,在搜索框搜索,MoeIDE并下载安装。完成后回到原来的里面,点击工具——>选项,完成后回到原来的里面,点击工具——>选项,在文件名里选择你的将要设置的背景图片。返回原来的界面,搜索框内搜索主题,选择带有英文单词Transparent的选项,确定即可完成背景图片的设置了。...

2022-07-24 16:01:58 4606 4

原创 成员函数常引用的相关问题

函数参数使用引用,指针。不改变传入数据本身,一般写为常量变量,即写上 const,确保该变量不会被外部修改。

2022-01-04 19:35:35 90

原创 const,成员函数的参数为指针

当参数为指针时,char* name因为是指针,所以需要写为const char* name,也就是写为常量变量,以保证参数所指向的变量不会被外部改变。

2022-01-04 14:11:05 450

原创 C++ 类的成员函数参数加const的作用

在类的成员函数中,参数前加const的作用是什么呢?在变量前加const就表示,对应的变量是“常量”,这个变量的值,就不能修改。比如函数:void food(const int &x){ x=2; //报错,不能修改常引用}以后就不能修改x的值,如果强行修改,就会报错,不能通过编译。在这个函数的参数,brand变量加const , 就表示,在这个函数内,就不能修改这个变量的值,不能被赋值。但是在这个函数外,却是可以修改的。如果强行修改,就会报错,导致编译失败。.

2021-10-21 23:05:06 714

原创 C++ stringstream流的基本用法

stringstream是一个特殊的流,需要加头文件#include,下文中,<<表示把变量,字符串都塞到用stringstream定义的ret变量中,然后用ret.str()进行转化,这样就能得到想要的字符串了。#include<sstream>#include<iostream>#include<Windows.h>#include<string>using namespace std;int main(void) { s

2021-10-17 18:23:22 488

原创 C++避免头文件重复包含问题

使用自己定义的头文件时,需要注意该头文件被重复包含。#include<iostream>#include<Windows.h>#include"sum.h"#pragma once#ifndef _SUM_H_#define _SUM_H_//计算累加和 s=1+2+3+4...nint sum(int n);#endif using namespace std;int main(void) { //函数调用 cout << su

2021-09-05 09:20:27 639

原创 C++字符串读取一行gets_s,getline

在C++读取一行字符串时,可以用函数getline 和 gets,在VC++2010,gets可以使用,但是在VS2019中,需要用到更安全的函数gets_s。在使用gets_s时,只需要一个参数,用char数组存储的字符串,也就是C语言的字符串存储方式。#include<iostream>#include<Windows.h>#include<stdio.h>#include<string.h>#include<string>us

2021-08-26 12:16:06 2498

原创 C语言的输入输出

#include<iostream>#include<Windows.h>#include<stdlib.h>#include<stdio.h>using namespace std;int main(void) { char name[1024]; printf_s("请输入你的名字\n"); scanf_s("%s\n", &name,sizeof(name)); printf_s("%s,你好!\n", &nam

2021-08-19 12:26:46 801

原创 C++,中文乱码问题解决办法

中文乱码的问题,很多时候是在其他的环境或者是记事本写的代码产生的。文件格式和正在使用的的环境文件格式不一致,就无法通过编译,产生一系列诡异的问题。解决办法:1.改变文件格式,使代码和环境的文件格式一致。操作步骤:点击工具->自定义->命令->添加命令->文件->高级保存选项->确定->回到文件界面->点击高级保存选项。...

2021-08-10 12:24:54 12555

原创 C++浮点数据精度输出控制

1.对浮点数据的精度控制,使用cout输出时,它默认输出6位有效数字。2.可以修改浮点数据的输出精度,使用cout.precision(4);,即为控制输出精度为4位的有效数字。3.使用定点法,cout.flags(cout.fixed);可以控制输出小数点后面的位数(上面为4),即小数点后面为4位数字。4.不再使用定点法时,用cout.unsetf(cout.fixed);取消,输出的仍然是4位有效数字。如下↓#include<iostream>#include<Window

2021-08-06 12:29:48 2951

原创 音乐图片加载以及相关问题

1.C++加载音乐时,需要用到播放音乐的头文件#include<mmsystem.h>,同时还得链接一个库文件#prama comment (lib,“winmm.lib”),来告诉编译器加载该库文件实现音乐播放。加载音乐使用函数 mciSendString(); 。2.加载图片需要头文件#include<graphics.h>,使用函数 loadimage();。#include<graphics.h>#include<Windows.h>#i

2021-08-05 23:54:24 621

空空如也

空空如也

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

TA关注的人

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