【-------Qt------】
ooMelloo
☆人工智能/机器学习/深度学习工程师进击中
☆立志成为数学好编程好业务好的三好青年
☆人必有痴 而后有成
展开
-
Qt之QSS:带CheckBox的QGroupBox及其样式设计
前言在引入QGroupBox的QSS时,会出现下图中的三种问题,导致界面显示极其丑陋。所以要改变QSS设置使界面更bf~图a 左边显示问题图b 标题下沉问题图c 不对称下面是两个方式改变QSS让界面更加舒服~ 顺便在原生QGroupBox基础上添加了checkBox来实现功能。一、QSS设置 普通的QGroupBox是不带Chec...原创 2019-06-06 17:33:10 · 7021 阅读 · 0 评论 -
Qt总结之十一:内存泄漏(汇总)
一、简介 Qt内存管理机制:Qt 在内部能够维护对象的层次结构。对于可视元素,这种层次结构就是子组件与父组件的关系;对于非可视元素,则是一个对象与另一个对象的从属关系。在 Qt 中,在 Qt 中,删除父对象会将其子对象一起删除。 C++中delete 和 new 必须配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大。Qt中使用了new却很少del...原创 2019-01-03 16:06:25 · 1137 阅读 · 0 评论 -
Qt总结之十二:C/C++内存分配方式与存储区
一、C/C++内存分配有三种方式 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 从堆上分配,亦称动态内存分配。程序在运行的时候用m...原创 2019-01-03 15:56:57 · 2776 阅读 · 0 评论 -
Qt创建多线程的两种方法
1.摘要Qt有两种多线程的方法,其中一种是继承QThread的run函数,另外一种是把一个继承于QObject的类转移到一个Thread里。 Qt4.8之前都是使用继承QThread的run这种方法,但是Qt4.8之后,Qt官方建议使用第二种方法。两种方法区别不大,用起来都比较方便,但继承QObject的方法更加灵活。这里要记录的是如何正确的创建一个线程,特别是如何正确的退出一个线程。本文...原创 2018-12-22 17:45:25 · 525 阅读 · 1 评论 -
基于Qt的UDP协议实现及解析数据
一、前言UDP 是一个不可靠的,面向数据报的协议。QUdpSocket 类可以用来发送和接收UDP数据报(datagram)。最常用的使用方式是使用bind()去绑定地址和端口号,然后使用writeDatagram()和readDatagram()去传输数据。这个socket对象每次往网络中发送报文都会发出bytesWritten()信号。如果你只是想用QUdpSocket发送报文,就...原创 2018-12-22 17:26:12 · 7137 阅读 · 1 评论 -
Qt总结之十:QList、QVector和QMap
一、QListQList<QString> list;创建一个列表对象,存储一列QString类型的值list<<str<<str1<<str2通过操作符 "<<" 将字符串存储在该列表中函数QList::append(const T&value)在列表末尾插入值QList<QString> li原创 2018-12-27 22:44:38 · 3980 阅读 · 0 评论 -
Qt总结之九:QMap中嵌套QList
前言QMap和QList都支持 QList<T>::iterator 迭代器一、初识 #include <QtCore/QCoreApplication> //#include <QList>#include <QMap>#include <QDebug>#include <iostream>#...原创 2018-12-27 22:31:49 · 4377 阅读 · 0 评论 -
Qt总结之八:绘制仪表盘
前言(1)QPainter用来执行具体的绘图相关的操作,用来画点,线,填充,变换,alpha/阿尔法通道(透明度) *Appha的值越大,就越不透明,范围是0-255,255就是不透明,0就是完全透明;当对应 RGB 颜色时, Alpha 会叠加到颜色上面;只有当 Alpha 通道是255时,才是其真正的颜色。*(2)QPainterDevice是Qpainter用来绘图设备,Qt中有几...原创 2018-12-26 18:49:19 · 14971 阅读 · 10 评论 -
Qt总结之七:QPaintEvent绘制雷达图(二)
前言这里使用另一套框架写的雷达扫描图这里PaintEvent事件比上一个版本写的好,但是不喜欢Widget嵌套的方式,后续会把两个版本整合到一起。 一、实现原理雷达效果包括三个部分:背景、转动的扇形和闪烁的点。 (1)背景的实现很简单,首先填充背景色,然后绘制横纵坐标轴以及三个同心圆。代码如下://背景 painter.fillRect(rect(),QColo...原创 2018-12-26 18:04:59 · 4254 阅读 · 0 评论 -
Qt总结之六:QPaintEvent绘制雷达图
前言关于雷达样式可参考文章:https://blog.csdn.net/Aidam_Bo/article/details/84260883一、代码头文件.h#ifndef RADARSCAN_H#define RADARSCAN_H#include <QtWidgets/QWidget>#include "ui_radarscan.h"class Rada...原创 2018-12-26 17:43:26 · 6552 阅读 · 0 评论 -
Qt总结之五:读写文件操作
一、简介 通过QFile、QDir、QFileInfo和QFileSystemWatcher类简单介绍对文件和目录的一些操作。对文本流和数据流没有太多的介绍,还有一些Qt资源、统一资源定位符、缓冲区可以在以后应用中加上。二、详解1、QFile可以读写文本文件、二进制文件和Qt资源文件,也可以和QTextStream和QDataStream一起使用。读取文本流耗时...原创 2018-12-26 15:47:34 · 1403 阅读 · 0 评论 -
Qt总结之二:遍历文件夹和文件目录,并过滤和获取文件信息、后缀名、前缀名(二)
前言需要在特定目录或磁盘下查找特定文件一、筛选目录(一)单一目录下遍历,筛选特定文件QDir dir("./SaveFiles");QFileInfoList list = dir.entryInfoList();(二)设备所有磁盘中遍历QFileInfoList DirInfoList = QDir::drives(); 二、遍历目录和文件在容器...原创 2018-12-26 14:58:53 · 1832 阅读 · 0 评论 -
Qt总结之一:遍历文件夹和文件目录,并过滤和获取文件信息、后缀名、前缀名(一)
一、采用递归和QDir实现文件夹下所有文件遍历的方法#include <QDir>bool FindFile(const QString & path){ QDir dir(path); if (!dir.exists()) return false; dir.setFilter(QDir::Dirs|QDir::Files);//除了...原创 2018-12-26 14:22:36 · 2786 阅读 · 0 评论 -
Qt总结之四:读取文件夹所有文件
之前,用标准C++写过读取文件夹。现在用QT重写代码,顺便看了下QT如何实现,还是相当简单的。主要用到QDir,详细文档可见这里A program that lists all the files in the current directory (excluding symbolic links), sorted by size, smallest first: #incl...原创 2018-12-26 14:02:48 · 1362 阅读 · 0 评论 -
qobject_cast用法总结
函数原型T qobject_cast ( QObject * object )本方法返回object向下的转型T,如果转型不成功则返回0,如果传入的object本身就是0则返回0。在使用时有两个限制: 1# T类型必须继承自QObject。 2# 在声明时必须有Q_OBJECT宏。QObject的派生类首先看看qobject_cast的manual:T...原创 2018-12-19 17:32:15 · 1430 阅读 · 0 评论 -
Qt总结之十五:QByteArray详解
一、QByteArray类提供一个字节数组,QByteArray可用于存储原始字节(包括“\ 0” )和传统的8位 “\ 0” 端接字符串 . 使用QByteArray比使用const char *更方便.除了QByteArray之外,Qt还提供了QString类来存储字符串数据。对于大多数用途,QString是您要使用的类。它存储16位Unicode字符,使您可以轻松地在应用程序中存储...原创 2019-01-04 16:19:25 · 90525 阅读 · 0 评论 -
Qt总结之十三:QUDPSocket详解
前言(一)和本文有关的博客八大字符转换方式可参考文章:https://blog.csdn.net/Aidam_Bo/article/details/84111776uint8_t / uint16_t / uint32_t /uint64_t数据类型详解:https://blog.csdn.net/Aidam_Bo/article/details/85775846QByteArra...原创 2019-01-04 18:05:03 · 8699 阅读 · 2 评论 -
Qt多线程通信
前言1 Qt线程间共享数据主要有两种方式:1)使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的。2)使用singal/slot机制,把数据从一个线程传递到另外一个线程。第一种方法在各个编程语言都普遍使用,而第二种方法是QT的特有的,本文主要介绍第二种。2 槽参数类型1) 在线程间使用信号槽进行...原创 2019-04-23 15:34:28 · 933 阅读 · 0 评论 -
Qt程序上线崩溃,处理方式(附微软编译器命令)
前言环境: Qt 5.8 + VS2013一、要想崩溃后能生产dump文件,需要添加代码已经把代码放在头文件中,只需要在main.cpp中包含头文件,然后在main()的第一行添加代码,搞定。SetUnhandledExceptionFilter(ExceptionFilter);二、要想release版本能调试,要修改编译参数。 在pro文件中添加,会生成pdb文件,然后e...原创 2019-01-30 18:36:36 · 860 阅读 · 0 评论 -
Qt总结之二十三:QByteArray与char、int、float(及其数组)之间的互相转化
前言因项目中,进程间通信使用UDP+TCP双通信方式,去传输大量数据(nTB数据),并在前端界面用OpenGL显示并绘制其波形。为防止丢帧导致图形出现波动,这里采用TCP确保数能够正常显示且刷新频率稳定。客户端和服务端之间通信,UDP中:发送:qint64 writeDatagram(const char * data, qint64 size, const QHostA...原创 2019-01-31 12:44:40 · 4436 阅读 · 1 评论 -
Qt控件总结:QToolButton
前言QToolButton类提供了用于命令或选项可以快速访问的按钮,通常可以用在QToolBar里面。工具按钮和普通的命令按钮不同,通常不显示文本,而显示图标。 详细描述当使用QToolBar::addAction()添加一个新的(或已存在的)QAction至工具栏时,工具按钮通常被创建 。也可以用同样的方式构建工具按钮和其它部件,并设置它们的布局。QToolButto...原创 2019-01-15 17:03:02 · 8640 阅读 · 0 评论 -
Qt总结:QMessageBox(原生态弹出框及究极超nice封装自定义弹出框)
一、前言在Qt中经常需要弹出窗口,QMessageBox可以实现此功能,一共有三种窗口,information, question, 和 warning,critical, about分别对应感叹号,问号和叉号等等,使用方法很简单,一共有三个参数,第一个是父窗口句柄,剩下两个分别为窗口名称和显示内容,显示内容为QString类型。二、常用弹出框提示型:QMessageBox::i...原创 2019-01-15 15:57:33 · 2743 阅读 · 1 评论 -
Qt总结之二十二:Qt控件QObject
简述元对象系统(Meta-Object System)提供了信号与槽机制,可用于对象间通信、运行时类别信息和动态属性系统。元对象系统基于三个方面:QObject类:为objects提供了一个可以利用元对象系统的基类。 Q_OBJECT宏: 在类的私有部分声明这个宏可以启用元对象特性,例如:动态属性、信号与槽。 Meta-Object编译器(moc): 为每个QObject子类生成必...原创 2019-01-15 15:25:54 · 1390 阅读 · 0 评论 -
Qt总结二十一:Qt控件一(QWidget)
构造函数QWidget(QWidget *parent = 0, Qt::WindowFlags f = 0); 其中参数 parent 指向父窗口,如果这个参数为 0,则窗口就成为一个顶级窗口 参数 f 是构造窗口的标志,主要用于控制窗口的类型和外观等,有以下常用值。 Qt::FramelessWindowHint:没有边框的窗口。 Qt::WindowSta...原创 2019-01-15 11:52:39 · 1900 阅读 · 0 评论 -
QT持续更新中
QObject QWidget简述继承关系.继承:QObject 、 QPaintDevice被继承:QAbstractButton, QAbstractSlider, QAbstractSpinBox, QCalendarWidget, QComboBox, QDesktopWidget, QDialog, QDialogButtonBox, QDockWidge...原创 2019-01-14 18:57:52 · 373 阅读 · 0 评论 -
Qt总结之二十:加载字体库
一、字体文件如果想直接用系统的字体,在UI文件中拖一个Font Combo Box,QFontComboBox显示的字体可以设置,如果觉得系统的字体太多,想自己定义字体,就得找一些字体文件,我这里用的是win10在C:\Windows\Fonts下面可以找到一些字体文件,自己挑一些用的着的复制出来 二、设计方式系统提供的QFontComboBox提供的字体太多,并且不能提供删...原创 2019-01-14 15:48:39 · 3380 阅读 · 0 评论 -
Qt总结之十九:Qt中控件new之后需不需要delete的问题
这里也牵涉到内存管理机制 可以参考文章:https://blog.csdn.net/Aidam_Bo/article/details/85698862 QT的父子对象机制是在 QWidget和QOject中实现的。当我们使用父对象来创建一个对象的时候 ,父对象会把这个对象添加到自己的子对象列表中。当这个父对象被删除的时候,它会遍历它的子对象类表并且...原创 2019-01-11 15:36:54 · 7925 阅读 · 0 评论 -
Qt总结:千奇百怪
QT 编码风格在内存分配模块和C语言风格一致这里给出了申请内存的正确方式和错误方式 // Wrong char* blockOfMemory = (char* ) malloc(data.size()); // Correct char *blockOfMemory = reinterpret_cast<char *>(malloc(data.size()));...原创 2019-01-11 11:11:30 · 389 阅读 · 0 评论 -
Qt总结之三:磁盘文件操作、遍历文件夹和文件目录,并过滤和获取文件信息、后缀名、前缀名(三)
前言本节内容主要包括磁盘容量检测、磁盘内指定或特定文件的操作话不多说,先上效果图共分为两个部分,第一部分是检测磁盘容量,第二部分是筛选磁盘内指定文件(test.txt)或特定文件(.txt / .png类型文件)获取磁盘容量关键函数:【fileapi.h】 GetDiskFreeSpaceEx() void DiskSend::GetDiskSpace(QString ...原创 2018-12-26 13:57:44 · 1454 阅读 · 0 评论 -
Qt总结之十八:总结
一、如何让Double不使用科学计数法显示arg()的用法体现出来了double d = 1212545665115.34;//数值一大,转换为QString时就会使用科学计数法QString str = QString("%1").arg(d, 0, 'f', 3);//保留三位精度,从而避免出现科学计数法qDebug() << str;二、QWidget、QDI...原创 2019-01-04 18:32:35 · 1344 阅读 · 0 评论 -
Qt总结之十七:QByteArray类型里含中文的数据解析出现乱码
一、背景Qt解析TCP/UDP通信传来的xml时,中文有乱码二、解决方法//头文件添加 #include <QTextCodec>......QByteArray tmpQBA = m_pSocket->readAll();QTextCodec *tc = QTextCodec::codecForName("GBK");QString tmpQStr ...原创 2019-01-04 18:20:23 · 2767 阅读 · 0 评论 -
Qt加载RGB内存数据,并显示彩色图
最近在做图像处理,需要将试验得到的数据转化成RGB,再显示到界面顺便学习了如下三个知识点:RGB数据生成BMP位图 YUV 格式与 RGB 格式的相互转换公式总结(C++版) 将RGB数组在内存中压缩成JPEG文件直接上Qt加载RGB图片数据代码: for(int i = 0;i<height;i++) { for(int j = ...原创 2018-11-28 16:33:12 · 8833 阅读 · 0 评论 -
基于Qt的图像处理技术和算法(灰度、暖色、冷色、模糊、锐化、添加相框纹理)
这篇文章主要阐述了如何使用Qt在像素级别上对图像进行操作,并实现了一些图像效果,这些效果主要有:灰度,模糊,锐化,添加相框,金属质感,改变图像饱和度,亮度还有白平衡。 介绍文章中,我们将讨论在Qt中修改图像的一些技术和算法,在这之前,你必须知道在Qt中操作图像的一些方法。.在Qt中有两种表示图像的类,Qt:QImage和QPixmap,还有QBitmap来存储...翻译 2018-11-23 15:43:51 · 4679 阅读 · 4 评论 -
Qt之HTTP之模仿迅雷——根据URL获取文件信息(上)
一、简述 最近再看Qt实现HTTP下载时,看了一下迅雷下载,发现迅雷做的很好,不论是界面还是下载速度都非常不错,今天看到迅雷9新建下载任务一个神奇效果,复制下载url到输入框,迅雷能够自动解析下载文件信息。 于是十分好奇,便自己用Qt尝试做了一下,忙了一晚上终于做出了一个大概模样。下面看一下效果。下面是迅雷的效果。下面是我自己实现的一个效果。对比上下两张图,可以看出模仿相似...原创 2018-08-20 19:42:44 · 863 阅读 · 0 评论 -
Qt之HTTP请求下载
简述最近在研究了一下用Qt 的方法来实现http下载,Qt 中的Http请求主要用到了QNetworkAccessManager、QNetworkReply、QNetworkRequest 这三块。本篇文章主要叙述如何用Qt 的方法进行HTTP 请求下载文件,能够支持断点续传(断点续传即能够手动停止下载,下次可以从已经下载的部分开始继续下载未完成的部分,而没有必要从头开始上传下载),并且实时更...原创 2018-08-20 19:11:03 · 1100 阅读 · 0 评论 -
Qt之多线程编程(二)
现在Qt官方并不是很推荐继承QThread来实现多线程方法,而是极力推崇继承QObject的方法来实现,当然用哪个方法实现要视情况而定,别弄错了就行,估计Qt如此推崇继承QObject的方法可能是QThread太容易用错的原因。继承QThread实现多线程的方法点此1. 前言上一篇介绍了传统的多线程使用方法——继承QThread来实现多线程,这也是很多框架的做法(MFC),但Qt还有一...原创 2018-08-17 16:09:32 · 661 阅读 · 0 评论 -
【VS】项目属性配置(中)
本文主要针对在项目每次新建时需要的头文件include、lib、dll进行配置的问题头文件include上面头文件include是在做OSG三维相关的项目所添加的头文件。其中,用到Qt的头文件include、OSG的头文件include。不同版本的OSG会碰到头文件目录问题,不能仅仅引用/添加$(QTDIR)\include,有的头文件在子目录下,还需针对不同版本的Qt/OSG在头...原创 2018-08-22 18:03:49 · 1057 阅读 · 0 评论 -
Qt之多线程编程(一)
1.摘要Qt有两种多线程的方法,其中一种是继承QThread的run函数,另外一种是把一个继承于QObject的类转移到一个Thread里。 Qt4.8之前都是使用继承QThread的run这种方法,但是Qt4.8之后,Qt官方建议使用第二种方法。两种方法区别不大,用起来都比较方便,但继承QObject的方法更加灵活。这里要记录的是如何正确的创建一个线程,特别是如何正确的退出一个线程。本...原创 2018-08-16 17:52:05 · 556 阅读 · 0 评论 -
Qt多线程之QMutex
QMutex类提供的是线程之间的访问顺序化。 QMutex的目的是保护一个对象、数据结构或者代码段,所以同一时间只有一个线程可以访问它。(在Java术语中,它和同步关键字“synchronized”很相似),(在Objective-C术语中,它和同步关键字“dispatch_sync”很相似)。例如,这里有一个方法打印给用户两条消息:void someMethod(){ qD...原创 2018-08-16 17:39:41 · 1085 阅读 · 0 评论 -
Qt之多线程编程初识
做项目时遭遇用户界面冻结的问题,究其原因是槽函数里装了一个需要CPU密集操作的功能。使用多线程,可以解决界面冻结的问题。多线程的几大特点:多线程的执行顺序无法保证,与操作系统的调度策略和线程优先级等因素有关。 多线程的切换可能发生在任何时刻、任何地点。 多线程对代码的敏感度高,因此对代码的细微修改都可能产生意想不到的效果。先由一个简单的例子引出多线程先作出这个简单的界面“...原创 2018-08-16 16:19:29 · 393 阅读 · 0 评论