Qt
文章平均质量分 60
非长道
这个作者很懒,什么都没留下…
展开
-
Qt JSON
Qt JSON 常用类QJsonDocumentQJsonDocument 类用于读和写 JSON 文档。一个 JSON 文档可以使用 QJsonDocument::fromJson() 从基于文本的表示转化为 QJsonDocument, toJson() 则可以反向转化为文本。解析器非常快且高效,并将 JSON 转换为 Qt 使用的二进制表示。已解析文档的有效性,可以使用 !isNull() ...转载 2018-06-01 10:22:17 · 1330 阅读 · 0 评论 -
Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径、用户目录路径、临时文件夹等。在 Qt 中实现这几个功能所用的方法虽然都不难,但是各不相同,每次用到时还要现去查,很不方便。因此就写了这篇博客,把这几种需求的实现方式总结了一下。算是个备忘录吧。程序所在路径获取程序所在路径,QCoreApplication 类里就实现了相关的功能:QString QCoreApplication::appl...转载 2018-03-15 11:04:13 · 844 阅读 · 0 评论 -
QGraphicsView框架事件处理
一、简介 GraphicsView支持事件传播体系结构,可以使图元在场景scene中得到提高了已被的精确交互能力。图形视图框架中的事件都是首先由视图进行接收,然后传递给场景,再由场景给相应的图形项。 对于键盘鼠标事件,scene会传递给获得焦点的图形项。如果场景没有获得焦点,那键盘事件会丢弃;如果调用场景setFocus()或者场景中的一个图形项获得了焦点,那么场景会自动获...转载 2018-03-07 13:20:33 · 4228 阅读 · 0 评论 -
QGraphicsView 的使用(滚轮缩放)
1. 继承QGraphicsView;class MyGraphicsView : public QGraphicsView2. 重写构造函数MyGraphicsView(QGraphicsScene *scene, QWidget *parent = 0);3.设置 scene 尺寸scene->setSceneRect(0, 0, 1280, 720);4. 重写paintEvent 函...原创 2018-01-18 14:50:08 · 15664 阅读 · 4 评论 -
Qt 使用第三方库
简述在 Qt 中经常会用到第三方库,例如:FFmpeg、OpenCV 等。第三方库的使用比较简单,只需要一些基本的配置就可以搞定,一起来看看吧!简述第三方库源代码库文件目标目录第三方库假设你需要依赖一个跨平台的库 - MyLibrary,并且有几个文件作为库的一部分。我们的项目 MyQtApp 将这些文件存储在名为 3rdparty转载 2018-01-25 18:24:04 · 4680 阅读 · 0 评论 -
Qt .pro文件详解
1. TEMPLATE变量TEMPLATE描述了为建立目标文件而采用何种模板,即生成何种形式的Makefile文件。Qmake工具定义了5种模板:1. 应用程序App,为建立一个Qt应用程序创建Makefile文件;2. 库lib,为建立引用程序库而创建Makefile文件;3. 子工程 subdirs,为建立子目录下的目标文件创建一个Makefile文件,子目录通过变量SUBDIRS指定(子目录...转载 2017-12-19 11:35:03 · 358 阅读 · 0 评论 -
QT Tips 小总结
1、QString中的字母转char char可以直接加减运算 QString letter("test"); int index = letter.at(0).toLatin1() - 'A' + 1; QChar chr(0x2028); if (chr.unicode() == 0x2028) { ... }2、f...原创 2016-11-11 15:14:35 · 1896 阅读 · 0 评论 -
QPainter绘制 保存图片
先设置pixmap,在把painter 设置汇在 pixmap 上,然后更新painter代码 : QPainter p; QPixmap map(outLine.width(), outLine.height()); map.fill(Qt::transparent); p.begin(&map); text->drawOnPath(p, path)原创 2017-02-15 16:17:11 · 11485 阅读 · 3 评论 -
QTextEdit 控件的妙用(以及与QPlainTextEdit的区别)
1.QTextEdit 可以将 纯文本plainText 转化为 富文本 htmlText:原创 2017-08-03 14:21:53 · 49507 阅读 · 0 评论 -
QString 和 char* 之间的转换(以及QByteArray)
QString转char *先将QString转换为QByteArray,再将QByteArray转换为char *。原创 2017-03-08 14:55:28 · 12352 阅读 · 1 评论 -
Qt图片绘图类QPixmap/QImage/QPicture
绘图设备是指继承QPainterDevice的子类。Qt一共提供了四个这样的类,分别是QPixmap、QBitmap、QImage和 QPicture。转载 2017-06-13 15:47:40 · 25773 阅读 · 0 评论 -
QPixmap 对象比较
有一个需求:重复图片,文件只保存一次。所以要比较图片内部数据 QPixmap 是不是一样(没有保存图片路径,故不能对比路径来判断)。但QPixmap 没有重载相等“==”运算符,最后把 QPixmap 转为QImage 对比像素,来对比是不是同一图片。--------------------------------------------------------------------------...原创 2018-03-09 11:50:37 · 2249 阅读 · 0 评论 -
Qt 判断文件、文件夹是否存在的方法
一直对Qt的isFile、isDir、exists这几个方法感到混乱,不知道到底用哪个,网上搜了下资料,也是用这几个方法但是都没有对其深究,经过测试发现会存在问题,先看看下面的测试代码[cpp] view plain copy{ QFileInfo fi("C:/123"); // 目录存在 qDebug() << fi.is...转载 2018-03-17 17:21:42 · 6400 阅读 · 0 评论 -
Qt测算程序运行时间
【问题描述】程序运行时间是编程的一项重要指标,在QT中如何测算程序的运行时间呢?【解析】测试函数[html] view plain copy#include <math.h> void function() { unsigned int i,j; double y; for(i=0;i<1000;i++) for(j=0...转载 2018-06-05 18:11:23 · 1397 阅读 · 0 评论 -
QT 获取MD5值
QT中,提供了QCryptographicHash类,很方便的实现的字符串到md5/md4/sha1的转换,可以通过两种方法实现:[cpp] view plain copyQString pwd="123456"; QString md5; QByteArray ba,bb; QCryptographicHash md(QCryptographicHash::Md5); ba.append...转载 2018-05-29 15:55:31 · 15608 阅读 · 0 评论 -
如何定一个只能在堆上或者只能在栈上定义的类
C++中,对象的建立分为两种,一种是静态建立,如A a;另一种是动态建立,如 A *ptr=new A;静态建立:由编译器为对象在栈上分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象,使用这种方法,直接调用类的构造函数动态建立:是通过new运算符将对象建立在堆空间中,这个过程分为两步,第一步是执行operator new()函数,在堆空间中搜索合适的...转载 2018-06-04 17:40:13 · 1201 阅读 · 0 评论 -
图片更改格式
QFileInfo file(imgPath); if (!file.isFile()) return; if (file.suffix() != "png") { QString pngPath = file.absolutePath() + "/" + file.baseName() + ".png"; //QFile::copy(...原创 2018-04-23 14:04:32 · 1306 阅读 · 0 评论 -
Qt App自动重启及关闭子窗口
一、简介 最近因项目需求,Qt程序一旦检测到错误,要重新启动,自己是每次关闭主窗口的所有子窗口但有些模态框会出现问题,因此从网上总结了一些知识点,以备以后的应用。二、详解1、Qt结构[cpp] view plain copyint main(int argc, char *argv[]) { QApplication a(argc, argv); MyWidget ...转载 2018-03-14 14:26:52 · 904 阅读 · 0 评论 -
图像的宽度和 pitch
1、单位不同,width是像素,pitch是字节。 因此一个640*480的8位图和640*480的32位图,他们width一样,而pitch不一样。 2、pitch可能大于width个像素所占字节数。 width就是图像实际显示的宽度;而pitch是存储一行图像所占的字节(相邻两行起点指针的差值),多部分情况下为了高效处理,会将每行图像都对齐存储,这样pitch就包括了对齐使用的填充字...转载 2018-01-30 11:25:14 · 6403 阅读 · 1 评论 -
Qt中定时器使用的两种方法
Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类。 其精确度一般依赖于操作系统和硬件,但一般支持20ms。下面将分别介绍两种方法来使用定时器。方法一:QObject中的定时器的使用,需要用到三个函数1、 int QObject::startTimer ( int interval ) ; 这个是开...转载 2018-03-06 18:17:26 · 1615 阅读 · 0 评论 -
QT .pro文件 LIBS用法详解
在程序中需要使用到团队其它成员开发的静态库和动态库,起初是知道使用LIBS变量在在.pro文件中指定需要包含的库,但是实际使用的时候却遇到很大麻烦,但其实确实是因为自己看官方文档不太用心造成的。 下面是官方文档对于LIBS变量的使用说明:这段话对于LIBS的使用说的很清楚了,就是-L指定库的目录,而-l指定库的名字(如果是在Linux下,则去掉lib和后缀名,windows下去掉后缀名即可),静态...转载 2018-03-13 18:50:47 · 13422 阅读 · 5 评论 -
Qt 小总结
1、获取屏幕的工作区的大小[cpp] view plain copy{ //获取屏幕分辨率 qDebug()<< "screen width:"<<QApplication::desktop()->width(); qDebug()<< "screen height:"<<QApplication::desktop转载 2018-03-13 15:48:14 · 860 阅读 · 0 评论 -
Qt::ConnectionType解析:Qt信号槽连接方式
signal/slot在底层会使用三种方式传递消息。参见QObject::connect()方法:bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoC...转载 2018-03-12 15:24:32 · 1316 阅读 · 0 评论 -
QT json序列化 - QJsonDocument
不借助QJson的第三方库,使用QJsonDocument 来序列化原创 2017-06-22 11:51:53 · 4767 阅读 · 0 评论 -
富文本 QTextDocument 解析及相关
QTextDocument 富文本 QTextDocument textDoc; textDoc.setIndentWidth(20); // 缩进 textDoc.setHtml(text->htmlText()); // 文本QTextBlock 文本块(段落)文本块由 QTextBlock 类提供。文本块可以将具有不同字符样式的文本分组,用于表...原创 2016-12-05 14:52:39 · 11525 阅读 · 0 评论 -
Qt菜单 QMenu QAction连接信号槽函数
Menu菜单 中的QAction 自身连接槽函数QStringList strList;for(int i = 0; i< strList.size(); i++){ QString valStr = strList.at(i); if(valStr == "SEPARATOR") m_menu->addSeparator(); else {原创 2017-01-04 11:34:45 · 27247 阅读 · 0 评论 -
qt XML中的HTML节点,转换为html格式的字符串
// Xml 中的 HTML 解析,拼接为字符串void elemToString(QDomElement htmlElem, QString &htmlText){ // 属性.行 htmlText.append("<").append(htmlElem.tagName()); QDomNamedNodeMap map = htmlElem.attributes();原创 2016-10-08 17:49:15 · 2079 阅读 · 0 评论 -
Qt 错误:The inferior stopped because it received a signal from the Operating System
运行的时候会崩溃,并提示如下错误: Signal received The inferior stopped because it received a signal from the Operating System. Signal name : SIGSEGV Signal meaning : Segmentation fault这个错误说明程序中有野指原创 2016-11-22 14:39:27 · 91441 阅读 · 8 评论 -
QList (链表) & QVector (数组)
一个是随机存取,一个是连续存取,所以list插入删除很快,vector查询很快。但是vector有个地方一定要注意:vector:如果你添加元素,但是vector的容量(是容量,不是大小,容量比大小大,会预先多分配空间)不够的话,系统就会重新分配一段内存,然后把原先的内容全部拷贝过去,然后删除原先的内容。所以,如果你设定了一个纸箱vector的指针,或者说迭代器,在你添加元素之后,这个转载 2016-11-25 13:51:28 · 26657 阅读 · 1 评论 -
BasicExcel 对Excel 的操作使用
包含头文件和命名空间#include "BasicExcel.hpp"using namespace YExcel;写 BasicExcel e; e.New(1); QString strTableName = pageName; BasicExcelWorksheet* sheet = e.AddWorksheet(reinterpret_cast原创 2016-12-05 17:39:08 · 1621 阅读 · 0 评论 -
QMap (映射表) & QHash (哈希表)
QMap 根据key,获取value; const T value(const Key &key, const T &defaultValue = T()) const; T &operator[](const Key &key); const T operator[](const Key &key) const; 其他 bool contains(cons转载 2016-11-25 17:03:29 · 6566 阅读 · 0 评论 -
Qt 路径操作(代码)
/* * 删除文件夹 */ static bool deleteDirectory(const QString &path) { if (path.isEmpty()) return false; QDir dir(path); if(!dir.exists())原创 2016-10-08 17:46:27 · 2964 阅读 · 0 评论 -
XML 中的 ﹤![CDATA[ ]]>,及其解析
CDATA CDATA 全名:character data,在标记CDATA下,所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待,CDATA的形式如下: CDATA的文本内容中不能出现字符串“]]>”,另外,CDATA不能嵌套。DTD实例: 指定类型为CDATA以后就可以在XML中被用于实例, 例如下面payment 元素的type属性被指定为原创 2017-01-09 13:31:32 · 87717 阅读 · 0 评论 -
QDomText、QDomCDATASection、QDomComment 和QDomCharacterData
QDomCharacterDataThe QDomCharacterData class represents a generic string in the DOM.Character data as used in XML specifies a generic data string. More specialized versions of this class are QDomT原创 2017-01-09 15:10:08 · 1151 阅读 · 0 评论 -
QLatin1String类的说明
QLatin1String类对US-ASCII/Latin-1编码的字符串进行了简单封装。可理解为关于const char*的一个浅封装。翻译 2017-06-02 13:51:40 · 16094 阅读 · 0 评论 -
QDataStream、QTextStream读写二进制、文本文件
二进制用数据流 QDataStream、文本文件用文本流 QTextStream原创 2016-11-24 14:33:54 · 8206 阅读 · 0 评论 -
Qt中用 QRegularExpression 代替QRegExp
原文地址:https://www.codeproject.com/Tips/729656/Reasons-to-abandon-and-replace-QRegExp-in-your-QtA quick overview why you should abandon Qt's QRegExp class and move on to use QRegularExpressionIntr翻译 2017-05-08 13:52:33 · 5466 阅读 · 0 评论 -
Qt5.0 正则表达式 QRegularExpression 的使用
相对于QRegExp,QRegularExpression class修复了很多bug,提高了效率,提供了对Perl的RegEx几乎全面兼容的搜索引擎,使用时建议使用QRegularExpression原创 2017-05-09 15:50:47 · 13698 阅读 · 3 评论 -
QT 正则表达式 QRegExp 使用
QRegExp rx("(startxref)(\\s+)(\\d+)"); pos = rx.indexIn(trl , pos)) ; pos += rx.matchedLength();原创 2017-03-14 17:42:43 · 16260 阅读 · 0 评论 -
Qt 编译报错 error: invalid use of incomplete type 'class QXxx'
编译报错头文件中信号:signals: sendStrm(QString str); sendSize(QSizeF size);信号类,槽函数所在类,单独编译都没问题,到了项目编译,就出错:类名不合法? WTF.先在信号类的源文件包含此类,还是报同样的错误。最后放在了信号类头文件中包含? 项目编过了!幸好没耽误多少时间,不过问题有点莫名其妙,大原创 2017-05-23 16:15:24 · 19587 阅读 · 2 评论