- 博客(65)
- 问答 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT常用函数和总结(持续更新)
前情回顾:我又有一个多月没写博客了,上个月太忙了,忙着毕业设计跟论文,请了一个多月的假,实习也快结束了,我把我遇到的写下来,大家一起学习。内容: 一、trimmed //删除字符头尾空格 二、setEchoMode //设置密码保护(输入字符为小黑点) //输入什么就显示什么 1、echoLineEdit->setEchoMode(QLineEdit:...
2019-06-05 11:14:57
9520
2
原创 QTcpSocket中数据接受不全和数据不实时等问题
超时和超过缓冲。客户端接受函数用的是Qt类中封装的readAll()函数,当初的想法是服务端有多少数据发送过来,客户端就全部读取。重回起点,问题根源应该不在接收函数这里,那就应该是信号不及时触发,于是写了个测试代码,服务端循环发送,每次发很小的数据,客户端信号触发次数不对等,也就是服务端发了三次,客户端这边可能一次触发将三次数据全部接受。本文介绍了QtTcpSocket数据接受不全,数据不实时的问题,分享了在实际项目的解决问题的方案和遇到问题的分析,为后具有相同问题的解决提供一定的参考。
2022-08-23 11:37:11
4880
2
原创 日常项目总结
前言:项目总结1、自定义的QComboBox触发鼠标点击事件: void QComboBoxSwitch::mousePressEvent(QMouseEvent* event) { QComboBox::mousePressEvent(event); //执行下面操作。 }2、客户端与服务器断开连接,立刻关闭,没有时间逗留。 struct linger { int l_onoff; int l_linger; }; linger m_sLinger;
2022-05-01 14:46:18
202
原创 QDialog关闭右上角问号
不知道是不是换了MSVC64位编译器的问题,网上让设置Dialog出现窗口之后让问号不出现的方法,设置之后窗口都不能显示出来。解决:setWindowFlags(windowFlags()&~Qt::WindowContextHelpButtonHint);
2021-11-04 11:27:18
643
原创 Qt使用VS编译出现的乱码问题
前言: 当编译器从mingw换成MSVC,重新编译的时候,编译不通过,出现不识别的字符等。原因: Qt Create 保存文件使用的是UTF-8编码,MSVC虽然可以正常编译带BOM的UTF-8编码的源文件(所以这里将源文件改为带BOM的UTF-8,比如可以使用NodePad++设置UTF-8),但是生成的可执行文件的编码是Windows本地字符集,比如GB2312。在可执行文件中,字符串是以GB2312编码的,当执行到这条语句时,对这个字符串是以UTF-8解码的,所以会出现乱码。解决:方法1、在用到
2021-10-22 10:32:30
1302
原创 在主界面上show一个新窗口,新窗口中的内容不显示?
前言:在主窗口的槽函数中,new一个新窗口,窗口中new了一个label,label上写的:文件正在处理,请稍后。在槽函数中在new之后,接着对文件操作,然而新窗口内的label不显示,等到该函数结束,文件处理完,新窗口才显示完。想法跟处理:exec()函数阻塞窗口,下面函数不进行在show()之后添加:QCoreApplication::processEvents();让show函数执行完。...
2021-06-08 14:19:35
439
原创 QScrollBar中的setWidgetResizable函数
背景:让滚动区域中的内容的左右随着窗口自适应,上下内容超出屏幕,出现滚动。方法: widget = new QWidget; sWidget = new QScrollArea; sWidget->setWidget(widget); //sWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); sWidget->setWidgetResizable(true);关键函数在于setWidg
2021-03-02 10:18:20
2689
原创 域名转化Ip之后的connect
背景:上层传过来的ip是域名,当用inet_addr()函数进行转换赋值时出现错误,导致Tcp连接失败。方法:首先判断传过来的ip是否是真的ip还是域名,如果是ip就直接inet_addr(),如果是域名,那就将域名转换成ip,再接着连接。代码:struct sockaddr_in addr_server;memset(&addr_server, 0, sizeof(addr_server));addr_server.sin_family = AF_INET;QString strI
2021-03-02 09:32:22
447
原创 读取Xml文件(包含中文和中文字符),显示在QLineEdit上
前言:Xml文件中包含中文和中文字符,显示乱码在QLineEdit控件上解决: QFile f(filePath); if (!f.open(QFile::ReadOnly | QFile::Text)) { return false; } QTextStream stream(&f); QTextCodec *codec = QTextCodec::codecForName("UTF-8"); stream.setCodec(co
2021-02-26 17:46:02
372
原创 QString与char*相互转化,字符转16进制输出
前言:Qt界面下,为了得到某个数据,将输入的16进制先转换成字符,经过一系列操作,再将字符串转化为16进制输出。void MainWindow::on_pushButton_clicked(){ int len = 0; unsigned char checkSum[20] = {0}; unsigned char buff[300] = {0}; //RID char* chRID = ui->lineEdit_RID->text().t
2021-02-05 10:38:17
1225
原创 排序算法:冒泡,选择,插入排序。
前言:将三种排序算法温习了一遍,感觉年纪大了,刚开始还是有点废脑子//冒泡排序:void bubble_sort(int arr[],int size){ for(int i=0; i<size; i++) { bool flag = false; for(int j=0; j<size-i-1; j++) { if(arr[j+1] < arr[j]) {
2021-01-26 17:57:25
104
原创 Qt release版本 exe启动错误
前言:今天将项目5.6版本更改为5.12版本,release之后,将原来的.exe文件替换,之后出现错误,打不开.exe,应该是原来要依赖的动态库不支持。解决:执行Qt 5.12.10 (MinGW 7.3.0 32-bit)进入.exe所在文件夹然后windeployqt .exe文件名 回车 配置完成。...
2020-12-25 13:53:10
482
原创 数据结构-线性表之数组
什么叫数组:数组(Array)是一种线性表数据结构。它是一组连续的内存空间,来存储一组具有相同类型的数据。什么线性表跟非线性表:线性表:通俗一点就是数据像一条线一样排成的结构,线性表上的数据只有前后两个方向,另外像链表,队列,栈等也是线性表的数据结构。非线性表:像二叉树,图,堆等,数据之间不只是前后的关系。数组的特征:...
2020-12-21 22:13:27
979
原创 数据结构与算法之复杂度(2):最好,最坏,平均,均摊复杂度
浅析最好,最坏,平均与均摊时间复杂度先看下面在数组中查找某个数据的代码:int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) { pos = i; break; } } return pos;}如果数组中第一个元素正好是要查找的变量 x,那就不需要继续遍历剩下的 n-1 个数据了
2020-12-18 11:37:29
214
原创 数据结构与算法之复杂度(1):时间与空间
1、什么是复杂度:复杂度分为:时间复杂度(渐进时间复杂度)与空间复杂度(渐进空间复杂度)。时间复杂度:表示算法的执行时间随数据规模增长的变化趋势。空间复杂度:表示算法的存储空间与数据规模之间的增长关系。2、为什么要知道复杂度①。事后统计法:跑一边代码就能得到运行时间和占用内存大小。②。测试环境与数据规模会影响测试结果。③。在不同配置的计算机下测试,得到的测试结果往往不同。在数据规模不大的情况下,插入排序比快速排序快,如果是一组有序的数据,代码执行的时间很短。④。所以在这种情况下,我们往往不
2020-12-17 16:55:38
143
原创 Qt模块的划分
根据Qt文档,翻译Qt模块的划分。“Help” -> “Reference” -> “All Qt Modules”Qt模块分成五大类:Qt Essentials(Qt基础模块).Qt Add-Ones(附加模块).Value-Add Module(增值模块).Technology Preview Features(技术预览模块).Qt Tools(工具).Qt 基础模块:Qt Essentials定义了所有平台上Qt的基础。 它们在所有受支持的开发平台和经过测试的目标平台上都
2020-12-03 11:47:50
745
原创 继上一篇阻塞情况下OpenSSL库的调用,如果是非阻塞情况
**前言:**在现的项目中是非阻塞的情况,不可能在等待客户端来连接,请他事情不做,accept默认阻塞,使其不阻塞。如果在非阻塞情况下,SSL_accept返回值为-1.阻塞:unsigned long iMode = 1; //set to non-blockingif(ioctlsocket(listen_sock,FIONBIO, (unsigned long *)&iMode) < 0){ closesocket(listen_sock); LOGERR("set soc
2020-11-27 14:04:06
1248
原创 客户端与服务器数据交互(OpenSSL库的调用(阻塞的情况))
前言:之前项目中调用SSL库,来作为服务器跟通讯工具通讯,也可以作为客户端跟服务器连接进行数据交互。准备工作: 为了保证调用的OPenSSL库是正确的,首先搭建测试环境。1、工具:因为工作上Qt用的较多,所以在Qt上进行的测试。IDE:Qt Create。2、创建了两个工程:Server(没有要验证客户端身份),Client(客户端没有进行任何证书验证,公钥私钥的加载)。Server.pro:LIBS += -L$$PWD -llibssl-1_1 \ -l
2020-11-17 13:34:59
717
原创 按字节读取文件
unsigned char sIBEParams[2048];QFile fParam((char *)ParamsFile); if (!fParam.open(QIODevice::ReadOnly)) { LOGERR( "open file [%s] ERROR\n", ParamsFile); return FILE_NOT_EXIST; } memset(sIBEParams,0x00,sizeof(sIBEParams));
2020-11-13 10:54:18
450
原创 Qt setStyleSheet 透明图片叠加
前言:懒惰不是我的理由,感觉隔了一万年没有写新的东西了。有关改变控件背景图片的需求,比如说:点击一个按钮,其他按钮背景发生变化,一点控件背景图亮一点,一些暗一点。背景:当时有两个想法,一个是将所有图片重新做,图片亮度亮一些或者暗一些,但是太浪费时间和人工,所以就有了第二个想法,将两张透明的,一张白色亮度高一些,一张透明的灰黑色的叠加上去就行了。于是就诞生了setStyleSheet的background-image,border-image,image有什么区别的疑问。解决疑问:background-i
2020-10-29 09:54:12
1319
原创 QListView的应用(按行添加,删除行,遍历数据,右击添加菜单)
前言:在原有的工具(只可以一次选一个文件)基础上支持一次性多个文件选择,并将选择的文件路径显示在listView上,并且可以支持右键删除文件路径。1、支持连续添加文件(下面这个是槽函数),setModel函数:QStringList fpath = QFileDialog::getOpenFileNames(this, "Please Select PS File", ".", "PS File(*.ps);;All Files(*.*)");QStringList pathlist = m_slFi
2020-06-03 11:08:04
7480
原创 递归遍历文件夹,递归解压,压缩文件,写解压和压缩过程的日志,
前言:好久好久没另写一篇博客了,都是在更新QT常用函数里面内容,这瘟疫影响了我躁动奋进的心,又是大半年没努力了,气人!这次做的是个多个压缩包 将压缩包里面的内容合并起来 打包成对应的压缩包的工具。1、递归解压文件:给我一个压缩包,里面还有很多压缩包,都解压完成才能拿到想要的文件:bool MainWindow::UnzipFile(QString ZipFilePath)//ZipFileP...
2020-05-08 16:25:39
1067
原创 windows下nginx搭建http本地服务器,使用postman发命令
1、nginx和postman去官网下载就行。2、可能在搭建nginx的时候无法启动,闪退,那可能是正常的,你可以用任务管理器看一下nginx.exe在不在运行,或者使用cmd进入之后查看nginx端口有没有被占用,其他博客都有叙述,占用的情况下要修改端口号。3、再确认nginx开启之后,使用postman发命令出现问题我出现的问题是使用get命令是可以的,但是要用的patch命令就会返回4...
2020-01-15 17:07:10
1065
原创 Effective C++ 条款2
条款02:尽量以const,enum,inline替换 #define1、条款改为宁愿用编译器也不用预处理器, 因为#define不被视为语言的一部分,所以就来了问题。2、#define ASPECT_RATIO 1.653这个宏ASPECT_RATIO不被编译器所见,是在被预处理器处理掉了,所以这个名称有可能没有进入记号表内。当运行此变量但是获得一个编译错误时,这个错...
2019-12-23 15:26:07
422
原创 Effective C++ 条款01
**前言:**不断学习,加强自身!!!条款01: 视C++为一个语言联邦1、C++是个多重泛型编程语言,同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式(用程序来生成程序)的语言。2、为了理解C++,必须人事这四个次语言:C:C++是以C为基础的,区块、语句、预处理、内置数据类型、数组、指针都来自C。面向对象C++:classes(包括构造函数和析构函数)、封装、继承、多...
2019-12-10 16:14:20
160
原创 项目阶段工作总结
兄弟们,我又回来了,好久没另写博客了,都是在更新qt里的东西,以后我要常写工作总结,最近在学习Effective C++,要把心得写下来跟大家多交流交流,[手动抱拳]。一、内容:关于这次工作中添加滚动条的总结:二、背景:真机模拟器更新后,当显示的数据超过屏幕高度的时候,滚动条出现,下拉可以显示更多的超出屏幕之外的信息数据。三、总结:1、不管是成员变量,全局变量还是函数名称,这些的命名还是不...
2019-12-10 11:49:30
595
原创 QDockWidget初始化大小的设置
一、QDockWidget的初始化大小class MyWidget:public QWidget{public: QSize sizeHize() const { return QSize(200,200); }};QDockWidget *pDockWidget = new QDockWidget;MyWidget *pMyWidget = ...
2019-09-06 16:12:17
2069
1
原创 【QT】布局之QFormLayout
**背景:**一直就知道有四种布局,QHBoxLayout,QVBoxLayout,QGridLayout,QFormLayout,但是一用到布局,我就只用QGridLayout,哈哈…今天就试了一试QFormLayout,有点把我难住,最后还是解决了。前三种QT手册中都有例子,CSDN上也有很多关于QFormLayout布局的,但是都一样,前面是label,后面是个QLineEdit,QT默认的...
2019-07-01 18:00:01
2097
原创 QT两个控件相互关联,(指针的传值)
我这个小辣鸡又回来了,抱歉各位,我发现自己好low啊,指针的传值真正的内涵都没搞懂,有点丢人,哎,今天算是明白了,不亏血赚。背景:还是接着上一个项目优化的,我把问题简化了一下,就是怎么关联两个控件,就比如两个按钮是相互影响的,是接着上篇sender函数的操作,从一百个按钮中拿到一个btn1,点击它,他后边那个按钮btn2,会和他一起消失,点击btn2,btn1会发生其他动作。解决:我就简化成两...
2019-04-30 17:14:12
3626
原创 QT中的sender函数,result函数
嗨!老铁们我又回来了,优化个项目搞死我了,终于搞定了!!!在这个项目中还是学了点东西的,我感觉比较重要的记下来跟大家分享,嘿嘿嘿。一、背景:在多个界面下的每个label,LineEdit,后面添加删除按钮。二、问题:添加了无数个按钮之后,点击按钮不知道是点击的哪个按钮三、这时候就可以用到sender()函数了。在new出按钮之后每个按钮绑定的槽函数里面用到: QPushButton ...
2019-04-26 17:28:21
2282
原创 以结构体的方式存入文件,并删除指定结构体
一、以我目前浅显的知识,如果要删除数组中指定的数据,只能把指定数据后的数据依次往前移,数据的添加删除果然不方便,在不查找数据的情况下,链表的添加删除还是方便的多。二、今天发现如果结构体中有char类型的数据,想要删除该组数据,直接可以将该组char类型的值=0,就能删除该组数据。下面是截图:结果:如有不对,望提醒指正。...
2019-04-16 10:24:47
4715
4
转载 原子性,原子操作
举个例子:A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:从A的帐户中减去1000块钱。如果A的帐户原来有3000块钱,现在就变成2000块钱了。在B的帐户里加1000块钱。如果B的帐户如果原来有2000块钱,现在则变成3000块钱了。如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如停电...
2019-04-12 11:49:02
495
原创 全局变量的使用
在项目中用全局变量有两种方法:1、第一种就是在源文件中定义,在其他文件中要使用的时候用extern修饰变量就可以使用2、来说说第二种方法:用static的方法,如果说的不对还请各位指正,我会及时修改。因为感觉在C++的.cpp中使用extern有点不舒服,还是在头文件中使用static好点,我只是个人感觉,哈哈~~~~因为在项目中要使用一个大的主窗口,我就在头文件中声明了,在源文件中定义如...
2019-04-09 15:35:17
3213
原创 const与static在C与C++语言下的意义
一、const在C++中:1、常对象:创建对象时添加const关键字,这个对象就不可以再修改,就有了常属性,就意味着整个对象所有变量不能更改2、常对象不能调用普通函数,调用成员函数就相当于把对象的this指针给了他,就有被修改的风险3、常对象只能调用常函数(函数体前加关键字叫常函数),普通对象也能调用常函数,常函数就相当于对this指针添加了const属性4、常函数与普通函数可以构成重载...
2019-04-09 14:50:10
171
2
原创 C++构造,初始化列表,this指针,const,static,单列模式
一、C++四个构造函数:1. 无参构造:2.有参构造:在构造函数的时候可以使用默认参数3.拷贝构造:class 类名 { 类名(类名& that) { //对类成员挨个赋值 . … } }Student stu2 = stu1;//用stu1 来拷贝stu24.赋值构造:void operator = (Student& that) {...
2019-04-09 14:47:39
491
原创 C++中的纯虚函数,虚函数表,虚析构,构造函数能不能是虚函数呢
一、纯虚函数:纯虚函数不需要被实现,如果要实现,必须在类外纯虚函数必须以多态的方式调用1. 成员函数只有纯虚函数的叫抽象类,这种类不能创建对象2. 子类会全部继承父类的纯虚函数,必须把父类的纯虚函数覆盖才能创建对象3. 抽象类只能以指针或者引用的方式指向子类来调用自己的非纯虚函数4. 纯抽象类的应用场景回调模式,命令模式,生产者与消费者模式,单例模式,工厂模式二、虚函数表 1、...
2019-04-09 14:42:40
973
原创 QT中的改写窗口的关闭事件
一、背景:qt中的窗口不能像office一样,在点击关闭按钮的时候,会弹出是否保存,取消的界面,所有就要重新写关闭事件。今天在项目中遇到需要重新修改这一个直接关闭窗口的功能,所以就要重载这个函数QCloseEvent。二、头文件:#include <QCloseEvent>在.h文件中protected:void closeEvent(QCloseEvent *eve...
2019-04-09 14:12:19
11132
2
原创 C:终端输入密码回显加密 显示*
#include <stdio.h>#include <conio.h>#include <ctype.h>char* HidePasswd(char* passwd){ char c; int i = 0; while ((c=getch())!='\r') { if ( isprint(c))//判断...
2019-03-22 11:26:26
529
空空如也
QCustomPlotY轴是变化的,怎么设置动态折线
2021-11-05
请教Qt如何在界面的不同区域同时开始绘制图形
2021-11-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人