禁用在 QChar,QString 和 QByteArray内容周围自动插入引号字符。当开启引号字符禁用时,这些类型的打印将不带引号字符,也不会转义不可打印的字符。
❝调试打印有点颜色输出,让编程更美好! ❞ 不多说直接上代码: #include <QDebug> #define NONE "\033[0m" #define DARK "\033[30m" #define RED "\033[31m" #define GREEN "\033[32m" #define YELLOW "\033[33m" #define BLUE "\033[34m" #define PURP
//QDebug打印调试信息 int num = 20; qDebug("十进制%d",num); qDebug("八进制%o",num); qDebug("十六进制%x",num); qreal PI = 3.14; qDebug("浮点%f",PI); qDebug("科学计数法%e",PI); qDebug("123%%");//123% //另一种输入方式 qDebug()<<PI; QString str =
正则表达式即一个文本匹配字符串的一种模式。Qt中QRegExp类实现使用正则表达式进行模式匹配,且完全支持Unicode,主要应用:字符串验证、搜索、查找替换、分割。
首先,lambda表达式可以使代码变得简单,C++中,一个lambda表达式表示一个可调用的代码单元。如代码:
现在手机相机拍摄的照片都是JPG/JPEG格式,JPEG格式的照片可以附加EXIF信息,这个EXIF信息是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,也就相当于图片的身份信息。它可以记录,拍摄的时间、拍摄的地点、相机型号、曝光参数等很多信息。
主要说Qt的以下几种容器 1.QList<T> 2.QLinkedList<T> 3.Map<T> 和一些常用的容器方法的使用 qSort qCopy qFind 1.QList<T>泛型集合是最常用的一种容器 看一下它的常用 操作 添加删除和两个迭代器 QListIterator和QMutableListIterator #include <QCoreApplication> #include<QList> #include<QDebug> int main(int argc, char *argv[])
通过使用qDebug,std::cout,printf在1秒内打印的字符串数据。
由于我们使用qDebug打印数据,好像什么数据都能打印到屏幕,由此我们可以利用QDebug类输出重定向到QString中,从而实现数据的字符串序列化。
上面看起来代码有点多,我们再看看Qt4版本下QT_NO_DEBUG_OUTPUT宏的实现:
SQLite 是一种轻量级的嵌入式关系型数据库管理系统,它是一个开源的、零配置的、自包含的、事务性的 SQL 数据库引擎。SQLite 的设计目标是简单、高效、可靠,适用于各种大小的应用程序。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
访问 https://github.com/aeagean/QtNetworkService
本文汇集了QString 与 (QStringList | QByteArray)之间的转换,以及QString、QStringList的一些常用方法。
实际项目中经常需要获取当前系统磁盘或者指定磁盘的使用情况,下面使用QT里的QStorageInfo 类获取磁盘信息,得到磁盘容量和使用情况。
另外,最近在看QtCreator源码,找到了版本号比较的实现,只能比较"1.0","1.1",不支持比较"1.0.0"这样的版本号,分享给大家。
QString是Qt中封装的字符串类,相对于标准库里的string,使用方法有些不同,个人感觉使用qt习惯后,感觉QString更好用,下面的代码主要是针对QString的字符查找、截取做的测试:
Qt 中的 map 与 stl、boost 中稍有差别,这些差别只能让你更加方便的去操作数据,下面代码演示了对 map 的增、删、改、查具体操作:
QFile类提供读写文件的接口。 它的构造函数如下: QFile(const QString & name) QFile(QObject * parent) QFile(const QString & name, QObject * parent) 通过它的构造函数我们可以知道,可以直接在调用构造函数的时候直接传递文件名给QFile类,这是常用的方法,或者我们先生成QFile对象,然后调用setFileName()方法来设置文件。 其中文件名中的路径分隔符要求必须是’/’,其他分隔符QFile不支持。 然后再了解下QFile的常用函数以及打开文件的模式类型: QFile的常用函数:
QStringList中存放了一系列的字符串,想找到某一个字符串的索引位置,如何使用.
QFile Qt中所有与IO相关的类都继承于QIODevice,继承图如下所示: 其中QFile类便是用于文件操作的类 在QT中,将文件当做一种特殊的外部设备对待(比如:串口,usb等就是外部设备)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/146095.html原文链接:https://javaforall.cn
QList类、QLinkedList类和QVector类常常使用到的Qt容器类有QList、QLinkedList和QVector等。在开发一个较高性能需求的应用程序时。程序猿会比較关注这些容器类的执行效率。下表列出了QList、QLinkedList和QVector容器的时间复杂度。
最近在项目测试中,发现了关于Qt - UI分辨率自适应的问题。从大小屏幕互相切换的问题。也引发了关于屏幕检测的问题。其中关于字体还有图片的自适应,需要在QApplication,初始化完成之后在进行配置。
在继承了 QWidget 窗口类以后,我们可以实现很多父类提供的虚函数,其中就包括鼠标的诸多消息处理函数,比如 mousePressEvent(鼠标单击消息)、mouseReleaseEvent(鼠标弹起消息)等等,这些虚函数我们可以通过 Qt 的帮助文档查看,如下:
❝经常使用QDebug进行打印字符串,其实我们还可以使用QDebug拼接字符串。❞ QString s; QDebug(&s).nospace() << "PI:" << 3.14 << __FUNCTION__ << __LINE__; qDebug() << s; //output: "PI:3.14main10" 不止是拼接字符串,还能拼接大部分的Qt对象,比如: QString s; QDebug(&s).nospace() << QSize(5, 5) << QPoint(1, 1) << Q
隐式数据共享类当作为函数参数传递的时候,不仅安全而且效率很高,因为传递的时候只是传递了数据的指针,数据本身只当自己被修改的时候才会去复制。简称写时复制。
需要加入的头文件: #include <QTime> 一. 秒单位时间转为字符串时、分、秒格式输出 int time_sec=100; QString timer=QTime(0, 0, 0).addSecs(int(time_sec)).toString(QString::fromLatin1("HH:mm:ss")); qDebug()<<timer; //输出:"00:01:40" 二. 秒单位时间转为字符串时、分、秒、毫秒格式输出 int time_sec=100
QList是目前最常用的容器类,它存储了给定类型的值的一个列表,而这些值可以通过索引访问。QList使用数组来实现,以确保进行快速的基于索引的访问。 使用QList::append和QList::prepend在列表的两端进行添加项目。 使用QList::insert()在列表的中间插入项目。 实例:
Qt对象之间可以存在父子关系 继承于QObject类或者其子类的对象,都称为Qt对象 当指定Qt对象的父对象时 需要通过setParent()成员函数来设置对象间的父子关系 子对象将会把自己的指针地址保存在父对象的children List链表里(因为父对象可以拥有多个子对象) 子对象内部会有一个指向其父对象的指针,可以通过parent()成员函数查看 代码试验 需要用到的函数: void QObject::setParent ( QObject * parent ); //设置为parent对象为
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128759.html原文链接:https://javaforall.cn
QMap提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据,这个类也支持一键多值的情况,用类QMultiMap
QJsonDocument: 提供一种读取和写入JSON文档的方法,可以通过它的的成员函数array()或object()检索文档中包含的数组或对象,然后读取JSON数据,或者修改数据。 QJsonObject: 封装了一个JSON对象, 可以使用它的成员函数size()、insert()和remove()来对修改JSON数据. QJsonArray: 封装了一个JSON数组,用来实现JSON数组的 1.解析JSON-示例 注意:JSON中的Key命名不能相同,否则的话会覆盖掉,比如: { "F
原文链接:https://blog.csdn.net/humanking7/article/details/80920892
事件是应用程序内部或者外部产生的事情或者动作的统称。在 Qt 中使用⼀个对象来表⽰⼀个事件。所有的 Qt 事件均继承于抽象类 QEvent。事件是由系统或者 Qt 平台本⾝在不同的时刻发出的。当用户按下⿏标、敲下键盘,或者是窗⼝需要重新绘制的时候,都会发出⼀个相应的事件。⼀些事件是在用户操作时发出,如键盘事件、⿏标事件等,另⼀些事件则是由系统本⾝⾃动发出,如定时器事件。常见的 Qt 事件如下:
QMutex, QReadWriteLock, QSemaphore, QWaitCondition 提供了线程同步的手段。使用线程的主要想法是希望它们可以尽可能并发执行,而一些关键点上线程之间需要停止或等待。例如,假如两个线程试图同时访问同一个全局变量,结果可能不如所愿。
在前面文章里已经介绍过,如何调用libvlc提供的API快速开发一款简单的视频播放器(https://juejin.cn/post/7023552394798006279) 这篇文章继续完善视频播放器的基本功能。 增加播放进度条、播放时间进度显示、实时获取播放过程中的状态等等。
之前想做的一个功能是读取U盘中的文件到系统磁盘目录下,今天抽空把简版功能实现了。那会儿一直搜索的Qt如何识别U盘,最终得到的结果是Qt检测U盘插拔,发现并不是我想要的。
C++中的queue 实现一种先进先出的数据结构,是一个模板类 头文件 #include<queue> 用法(以int型为例): queue<int> Q; //定义一个int型队列 Q.empty(); //返回队列是否为空 Q.size(); //返回当前队列长度 Q.front(); //返回当前队列的第一个元素 Q.back();
这里用Qt5.12,新建工程,实现获取操作系统信息、时间信息、网络信息和系统启动项。
qFuzzyCompare 是 Qt 提供的一个函数,用于比较两个浮点数是否相等。由于浮点数在计算机中的表示存在精度问题,直接使用 == 运算符比较两个浮点数可能会因为微小的舍入误差而导致不准确的结果。qFuzzyCompare 函数通过引入一个小的容差范围来解决这个问题,使得在一定精度范围内相等的浮点数被认为是相等的。
我们再看看使用for循环是怎么遍历的。下面介绍三种使用for循环的实现方法,你喜欢那种呢。
教大家如何屏蔽printf,cout,qDebug等打印信息。 1. MSVC编译器 将两个“/”连接成“//”实现注释是MSVC编译器扩展功能。 #define cout /##/ #define printf /##/ #define qDebug /##/ 启用宏替换后变为注释语句 printf("Hello world!"); 相当于: //("Hello world!") cout << "Hello world!"; 相当于: // <<("Hello world!") qDebug()
之前一章学习的是第三方库使用: 34.QT-qextserialport第三方库制作串口助手(并动态检测在线串口,附带源码)
在现实生活中,我们在不同的状态,对于相同的事,会有不同的反应,就拿天气对上班的影响。可以例举下图:
C++中的stack 实现一种先进后出的数据结构,是一个模板类. 头文件 #include<stack> 用法(以int型为例): stack <int> s; //定义一个int型栈 s.empty(); //返回栈是否为空 s.size(); //返回当前栈中元素的个数 s.push(); //在栈顶上堆进一个元素 s.pop();
QString 是 Qt 内部的一种字符串数据类型,QString 支持多字节编码(unicode)的一个字符串类。在程序和网络之间传输数据时,其他的程序和网络另一端的程序是不能识别他这种数据类型的。所以要想将 QString 类型的数据保存到文件或发送到网络,需要转换成 QByteArray 类型才可以。
对于上面应用,很明显,可以简单定义一个比较的函数,用来处理字符长度的比较工作。因此,如果想要利用仿函数,一定是需要用到仿函数类的功能,譬如:仿函数类定义的时候,可以传递一个参数,()操作的时候,也可以传递参数,两种参数有作用优先级的时候,可以考虑这种使用方法。下面实现一个简单工厂模式:
Qt中对目录遍历的支持是比较好的,比如QDir、QFileInfo、QFile等。 在Qt助手中可以查到有关QDir的用法,如下图所示:
QThread类提供了一个与平台无关的管理线程的方法。一个QThread对象管理一个线程。QThread的执行从run()函数的执行开始,在Qt自带的QThread类中,run()函数通过调用exec()函数来启动事件循环机制,并且在线程内部处理Qt的事件。在Qt中建立线程的主要目的就是为了用线程来处理那些耗时的后台操作,从而让主界面能及时响应用户的请求操作。QThread的使用方法有如下两种:
领取专属 10元无门槛券
手把手带您无忧上云