
QT干货(知识)
文章平均质量分 59
此专栏的主要内容是记录qt会用到的干货知识
咸鱼2333号程序员
企业员工小白一枚,分享实战过程中遇到的知识点及实用技巧
本人写的内容都比较简单易懂,注重于怎么去使用.
展开
-
QByteArray转char*、QString
QByteArray baArray = ""; char *buf = NULL; QString str = ""; buf = baArray .data(); //QByteArray转char* str = baArray ; //QByteArray转QString原创 2022-02-18 17:53:26 · 2904 阅读 · 0 评论 -
QStringLiteral(str)
在看项目代码的时候,总会看到下面这种情况QString用QStringLiteral(str)来初始化,有点好奇,就查了下,记录一下。这是用QStringLiteral初始化QString的原因:使用 QStringLiteral 宏可以在编译期把代码里的常量字符串 str 直接构造为 QString 对象,于是运行时就不再需要额外的构造开销了。这里补充一个知识隐含共享:隐含共享在后台自动运行,所以我们不用再编写任何代码来促使这个优化过程发生。举例说明:QString srr1 = "happy";Q原创 2022-06-26 22:11:43 · 2845 阅读 · 0 评论 -
QPushButton 样式使用示例(以及按钮setmenu添加下拉菜单的方法)
QPushButton样式表使用示例,及QPushButton怎么把设置style后恢复到没设置的情况下?原创 2022-06-26 17:07:30 · 3098 阅读 · 0 评论 -
JSON使用示例
1——什么是json?JSON,说白了就是JavaScript用来处理数据的一种格式,这种格式非常简单易用。JSON支持的语言非常多,包括JavaScript、C#、PHP、Java等等,这是由于JSON是独立于语言的轻量级的数据交换格式。2——json的两种格式:1.对象结构(键值对)无序对象结构是使用大括号“{}”括起来的,大括号内是由0个或多个用英文逗号分隔的“关键字:值”对(key:value)构成的。语法:jsonObj指的是json对象。2.数组结构 有序JSON数组结构是用中括号“[]”原创 2022-06-21 19:51:55 · 16289 阅读 · 1 评论 -
c++排序算法(快速排序、冒泡排序、选择排序)
1——快速排序,这里的容器是全局的,不全局的话,可以在参数那里加个数组的参数传进来。从大到小:原理:从序列的两端开始(1)首先将最左边的数值作为基准数,应用2个变量iTempLeftIndex和iTempRightIndex分别指向序列左端和右端;(2)首先从iTempLeftIndex左往右寻找一个小于基准数的数,iTempRightIndex从右往左寻找一个大于2的数;如果是从小到大的排序,就从左边往右找大于基数的数,从右边往左找小于基数的数。为什么这样,大家换个角度想想我们最后是要交换iTe原创 2022-06-10 20:21:18 · 823 阅读 · 0 评论 -
c++ 函数
天气阴,心情:无知使我显得愚蠢,显得莫名其妙的理所当然。C++ 中的函数定义的一般形式如下:return_type function_name( parameter list ){ body of the function}return_type :返回类型;function_name:函数名;参数、函数体。函数的定义=函数首部+函数体函数声明=函数首部+分号return_type function_name( parameter list );敲重点:c++.原创 2022-05-26 18:09:56 · 578 阅读 · 0 评论 -
基础网络知识
一、基础网络知识:1——网络互连将多台计算机连接在一起,完成数据共享。2——数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。根据网络互连的规模不同,可以划分为局域网和广域网。3——局域网即 Local Area Network,简称LAN。Local 即标识了局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下, 是无法通信的。局域网组建网络的方式:·基于网线直连原创 2022-05-23 13:55:24 · 691 阅读 · 0 评论 -
QMutexLocker(比QMutex更简单的让线程安全的方式)
今天在看别人的代码时,看到了QMutexLocker这个类,一看居然没有解锁的代码,于是就产生了好奇,特此记录一下。注意:这个类中的所有函数都是线程安全的。#include <QMutexLocker>创建:创建的时候就是为下面代码加锁的时候QMutexLocker ( QMutex * mutex );为什么要引入QMutexLocker,大家都知道QMutex是为了线程安全而产生的,同理QMutexLocker也是,只是它相对于QMutex要简化了许多,也比较不容易出原创 2022-05-10 14:58:51 · 780 阅读 · 0 评论 -
QT的system函数实现在qt代码里面执行脚本语言
函数原型:#include <stdlib.h>int system(const char *command);作用:system()通过调用/bin/sh-c命令执行命令中指定的命令,并在命令完成后返回。在命令执行期间,SIGCHLD将被阻止,SIGINT和SIGQUIT将被忽略。执行错误将会返回-1;通俗来讲就是可以利用system函数执行shell终端命令,比如我们在linux终端敲打的ls 文件名的命令,在这里用system("ls test.txt");也可以做到。原创 2022-05-09 15:10:43 · 5416 阅读 · 0 评论 -
QT foreach
如果只想按顺序迭代容器中的所有项,可以使用Qt的foreach关键字。该关键字是对C++语言的Qt特定添加,并使用预处理器实现。与任何其他C++循环构造一样,您可以在foreach循环的主体周围使用大括号,并且可以使用Break来离开循环;其语法为:foreach(变量,容器)语句{}使用示例如下:QList<QString> list; ... QString str; foreach (str, list)//从list中取出元素赋值给str { qDebug()原创 2022-05-09 14:03:17 · 2524 阅读 · 0 评论 -
函数指针、typedef void (WorkThreadObject::*PFUNC)();
前言:小编第一次见到这个的时候有点懵了!!!是什么东东?函数指针我好像知道,typedef我好像也知道,但是又来一个类名是怎么回事?归根结底还是对知识不太熟悉。现在小编就来讲讲下面这行代码吧,原则就是个函数指针,加上typedef的起别名的重用。typedef void (WorkThreadObject::*PFUNC)();看!去掉类名和域作用符是不是就是我们熟悉的函数指针了,到时候用的时候直接PFUNC即可代替该类里面的void型无参数的函数了 !!现在我们就来看看函数指针和typ原创 2022-05-07 11:29:27 · 685 阅读 · 2 评论 -
QListWidget 中的元素水平排列
QListWidget中元素的排列方式: m_listWidget = new QListWidget(); m_listWidget->insertItem(0,tr("TCP"));//添加元素 m_listWidget->insertItem(1,tr("UDP")); m_listWidget->setFlow(QListView::LeftToRight);//从左到右横向的排列,图片和文字也是从左到右排列 //元素是图片时 .原创 2022-02-11 19:00:42 · 4518 阅读 · 0 评论 -
QT QLinearGradient (颜色渐变---应用控件背景渐变)
示例: frame->setStyleSheet("background-color:qlineargradient(spread:pad,x1:0, y1:0, x2:1, y2:0,stop:0 #030303,stop:0.5 #030303 ,stop:1 #2E8B57)");1、spread:pad:渐变的模式为 pad,另外的两个模式为 repeat、reflect。2、x1、y1、x2、y2 四个坐标表示渐变的坐标范围。3、 x1、y1 对应为左上角坐标,x2、原创 2022-02-28 10:03:24 · 10611 阅读 · 0 评论 -
QString(详解)
目录一、QString转char*二、合并字符串三、分割字符串·split()函数·mid(pos,n)函数·QString::section·truncate(int)函数,从指定位置截断字符串str四、去除字符串两端的空白·QString::trimmed()函数·QString::simplified()函数五、查找是否包含字符串·indexOf()·startWith()/endsWith()函数·left(n)/right(n)函数六、常原创 2022-04-29 15:12:51 · 9584 阅读 · 0 评论 -
C++的结构体函数(C和C++结构体区别)
没想到吧,结构体里面也能放函数;之前自己都没使用过,所以第一次用的时候还有点不知所措。如下代码所示,在.h文件里面定义一个结构体,在里面直接添加函数就可以。不知道有没有小伙伴和我一样会疑惑结构体里面的函数可不可以在外面实现,就像类里的成员函数可以在.cpp里实现(会这样想的原因是万一函数里面的代码很长时,这样岂不是很不美观);答案是否,只能在结构体里面实现,一般来说,结构体里的函数也不会写得很长。struct SRT_TASK_DATA{ QString sTaskId; // 任原创 2022-02-18 10:32:43 · 4419 阅读 · 3 评论 -
总结:QT 多线程(处理密集时的界面响应保持)
目录前因:起因:如果处理一个特定任务上耗费的时间过多时,那么用户界面就会变得无法响应。问题:怎么保持在程序密集响应时,界面不会卡住?在此种情况下的解决方案:一、利用processEvents()函数二、使用多线程(QT开启多线程的三种方式)1、继承QThread重写虚函数run()2、moveToThread3、QtConCurrent::run()并发三、QThread线程安全释放顺序四、同步线程☋·QMutex☋·QReadWriteLock五、.原创 2022-04-29 18:25:26 · 7480 阅读 · 2 评论 -
QT之connect的第五个参数(信号与槽的使用)(qt对象树)
一 、QT connect 第5个参数一般不填,为默认值。1、Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型。如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnection类型。 2、Qt::DirectConnection:槽函数会在信号发送的时候直接被调用,槽函数和信号发送者在同一线程。效果看上去就像是直接在信号发送位置调用了槽函数,效果上看起来像.原创 2022-01-28 10:31:56 · 22085 阅读 · 0 评论 -
1024Byte(字节)=1KB
二进制数系统中,每个0或1就是一个位(bit),位是数据存储的最小单位。计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一次最多能处理32位数据。字节(Byte)是通过网络传输信息(或在硬盘或内存中存储信息)的单位,是计算机数据的基本存储单位。。字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。8bit(位)=1Byte(字节)1024Byte(字节)=1KB1024KB=1MB1024MB=1GB1024GB=1TB.原创 2022-02-21 15:44:52 · 5481 阅读 · 0 评论 -
QT解析XML的三种方式
1-QT QXmlStreamReader用法小结setDevice():设置好要处理的XML文件readNext():从xml输入流中读取下一个记号name():记号的名称,即<名称></名称>isStartElement():判断当前已读取的记号是否为开始元素,开始元素即<>isEndElement():判断当前已读取的记号是否为结束元素,结束元素即</>readElementText():读取当前记号对应的文本值,<>文本值<原创 2022-01-28 16:36:38 · 12086 阅读 · 0 评论 -
XML详解
1-什么是xml?eXtensible markup language可扩展标记语言,被设计用来传输/存储数据,纯文本,自行定义标签,自我描述;(HTML旨在显示数据)注:声明不属于XML本身的组成部分2-XML的语法规则· 所有元素都必须有关闭标签·XML标签对大小写敏感· 必须有根元素· 必须正确的嵌套· 属性值必须加引号实体引用:在XML中,一些字符拥有特殊的意义,所以为了避免引起错误,用实体引用来代替其他规则:3-XML元素· XML元素是指从开始标签到结束便签的部分原创 2022-01-28 16:49:33 · 1265 阅读 · 0 评论 -
QMetaObject::invokeMethod()使用解决界面卡住问题
主界面要执行一些耗时的操作时,不卡主界面的方式:原创 2022-04-25 16:30:48 · 6118 阅读 · 0 评论 -
QT 运行文件附带调试输出窗口(qt pro文件里的格式说明等)
前因:很多时候当我们发布程序阶段,我们会遇到程序双击无法运行也不报错提示(开发机器上一切正常),都不知道发生了什么,甚至任务管理器可以看到运行了但是没有界面弹出来,此时就需要在项目的pro文件中加上一行CONFIG += console,带界面的程序也会自动弹出调试窗口打印输出信息,方便找问题,一般没法正常运行的程序都会打印一些提示信息缺啥之类的。TEMPLATE = appMOC_DIR = temp/mocRCC_DIR = temp/rccUI_DIR =原创 2022-04-25 16:51:33 · 3089 阅读 · 0 评论 -
QT 之多种布局展示
QT布局目录QT布局一、QHBoxLayout/QVBoxLayout二、QFont三、QLinearGradient (颜色渐变)四、QGroupBox分组框一、QHBoxLayout/QVBoxLayout1.layout通过使用setcontentmargins来设置四周留白的间隔函数原型:void QLayout::setContentsMargins ( int left, int top, int right, int bottom ) layout1->setConte原创 2022-02-11 16:45:54 · 3123 阅读 · 0 评论 -
QT 布局管理器(QHBoxLayout/QVBoxLayout/QGridLayout)
1、setcontentmargins设置四周留白(相对于整个窗口的)的间隔;函数原型:void QLayout::setContentsMargins ( int left, int top, int right, int bottom )。layout1->setContentsMargins(1,0,1,0);2、setMargin()在控件内部的边距设置。3、addStretch()在布局里面添加弹簧。4、setspacing设置控件之间的间隔;注:设置无效的可能原因有,总布原创 2022-02-28 09:52:26 · 2918 阅读 · 0 评论 -
QGroupBox分组框
分组框通常带有一个边框和一个标题栏,作为容器部件来使用,在其中可以布置各种窗口部件。通常带有一个边框和一个标题栏,作为容器部件来使用,在其中可以布置各种窗口部件。布局时可用作一组控件的容器,但是需要注意的是,内部必须使用布局控件(如QBoxLayout)进行布局。 //创建复选框 QGroupBox *groupBox = new QGroupBox(tr("服务器配置")); groupBox->setFlat(false);//边框是否有线 groupBox-&原创 2022-02-28 10:10:41 · 3005 阅读 · 0 评论 -
QT css样式 详解
font-family:楷体;为设置字体类型,标准形式需要加双引号,不加也可能会生效,具体看系统是否支持,中英文都支持,但要保证字体编码支持,一般程序编码为"utf-8"时没问题。font-style:normal;为设置字体斜体样式,italic 为斜体, normal 为不斜体,oblique(倾斜).font-weight:bold;为设置字体加粗样式,bold 为加粗, normal 为不加粗;font-size: 14px;设置字体大小.注:字体同时设置时的顺序 style weight原创 2022-02-28 10:14:55 · 3068 阅读 · 0 评论