
QT/C++
行思坐忆,志凌云
务实北斗应用之星火,畅想北斗产品之燎原
展开
-
QML WebEngine + ECharts展示实时曲线
(相信不少人都会用 ECharts 这个网页图表库,我这里也只是学 WebEngine 顺带做个笔记) 我的环境:Qt5.15.1 MSVC 32bit,不同的版本可能 webengine 的初始化有所不同,以官方文档为准。 本文完整项目链接:https://github.com/gongjianbo/MyTestCode/tree/master/Qml/QmlWebEngineECharts 0.下载ECh...转载 2021-10-24 12:21:17 · 1484 阅读 · 0 评论 -
Json字符串与QVariantList 对象相互转换
在Qt中QVariantList 使用起来很方便,如果涉及到数据的传输,需要将QVariantList 数据转换为JsonArray字符串,这个转换Qt已经实现好了,只需要调用接口就可以完成转换,代码如下:main.cpp#include <QCoreApplication>#include <...转载 2020-08-04 22:31:30 · 1030 阅读 · 1 评论 -
qt 中文乱码 处理QByteArray类型里含中文的数据
qt解析tcp通信传来的xml时,中文有乱码解决方法:头文件添加 #include<QTextCodec>QByteArraytmpQBA=m_pSocket->readAll();QTextCodec *tc = QTextCodec::codecForName("GBK");QString tmpQStr = tc->toUnicode(tmpQBA);//如下转换会导...转载 2020-07-05 18:06:44 · 1711 阅读 · 0 评论 -
C++有关回车与换行问题
回车(Carriage Return, CR)和换行(Line Feed, LF),在一起称之为CRLF,这两个是不同的操作,在C++中回车符是"\r",换行符是"\n"介绍:回车(Carriage Return, CR)和换行(Line Feed, LF),在一起称之为CRLF,这两个是不同的操作,在C++中回车符是"\r",换行符是"\n"Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果原创 2020-06-23 21:05:01 · 1522 阅读 · 0 评论 -
Qt解析JSON数组
JSON 数组在中括号中书写,以逗号分隔。JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。比如:[ { "id": "1", "name": "aa" }, { "id": "2...转载 2020-06-07 11:28:05 · 1144 阅读 · 0 评论 -
Qt中使用qml的方法
1.1包含头文件//以下头文件均为 <>包含,因为编辑不允许所以使用""#include “QApplication”#include “QGuiApplication”#include “QQmlApplicationEngine”#include “QtQml”#include “QQuickView”#include <qtextcodec.h>#in...转载 2020-05-02 08:36:28 · 1815 阅读 · 0 评论 -
QVariant类及QVariant与自定义数据类型转换的方法
这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用。比如我们的 table单元格可以是string,也可以是int,也可以是一个颜色值,那么这么多类型怎么返回呢?于是,Qt提供了这个QVariant类型,你可以...转载 2020-05-26 20:52:36 · 1040 阅读 · 0 评论 -
C++:undefined reference to vtable 原因与解决办法
最近在写一套基础类库用于SG解包blob字段统计,在写完了所有程序编译时遇到一个郁闷无比的错误: MailBox.o(.text+0x124): In function `CMailBox::CMailBox[not-in-charge](CMmogAnalyseStatManager*)': ../src/MailBox.cpp:27: undefined reference to `CSgAnalyseStatBase::~CSgAnalyseStatBase [not-in..转载 2020-05-26 20:50:03 · 2726 阅读 · 0 评论 -
C++ 深拷贝和浅拷贝(位拷贝)详解
前提 在对象拷贝过程中,如果没有自定义拷贝构造函数,系统会提供一个缺省的拷贝构造函数,缺省的拷贝构造函数对于基本类型的成员变量,按字节复制,对于类类型成员变量,调用其相应类型的拷贝构造函数。阅读《高质量的c c++编程》,第9章有这样一段话,类似的话在《c++primer》《effecti...转载 2020-05-24 20:58:23 · 305 阅读 · 0 评论 -
QT5:QString与QByteArray互相转换
//Qt5.3.2QString str("hello"); QByteArray bytes = str.toUtf8(); // QString转QByteArray方法1 QString str("hello"); QByteArray bytes = str.toLatin1(); // QString转QByteArray方法2//Qt5.3.2QByteArray bytes("hello world");QString string = bytes; // QBy原创 2020-05-21 21:00:40 · 762 阅读 · 0 评论 -
QT QHash(添加、遍历、查找)
添加头文件:#include QHash<QString, QString> map;添加:map.insert("one", "1");map.insert("two", "2");map.insert("three", "3");map.insert("four", "4");遍历:QHash<QString, QString>::iterator i;for( i=map.begin(); i!=map.end(); ++i) qDebug() &原创 2020-05-18 20:14:50 · 8635 阅读 · 0 评论 -
比较两个double数是否相等(C++/Java适用)
问题分析:计算机判断两个数相等,将判断所有的二进制位是否相等,当所有的位都相等时,两个数才相等,绝对的相等。解决方法:万物没有绝对相等的概念,在我们的程序中:对小数来说,保留小数点后几位就足够了,因此两个小数的差在可接受的精度范围内就可以被认为是相等的。#qt5写法public bool equal(double a, double b) { if ((a- b> -0.000001) && (a- b) < 0.000001)原创 2020-05-17 21:00:01 · 3628 阅读 · 0 评论 -
C++线程休眠方法
/*写一个函数,实现对一段文字一个字一个字的打印*/#include "stdio.h"#include "string.h"#include "windows.h"//关键导包void print(char *pchar){int i;int nlen = strlen(pchar);for(i=0;i<nlen;i++){ printf("%c",*(pchar+i)); Sleep(100);//休眠100毫秒}}void main(){char原创 2020-05-17 20:50:40 · 2479 阅读 · 0 评论 -
Qt快捷键
一、快捷键配置方法:进入“工具->选项->环境->键盘”即可配置快捷键。二、常用默认快捷键:编号快捷键功能1Esc切换到代码编辑状态2F1查看帮助(选中某一类或函数,按下F1,出现帮助文档)3F2在光标选中对象的声明和定义之间切换(和Ctrl+鼠标左键一样的效果,选中某一类或函数,按下F2,迅速定位...转载 2020-05-17 20:46:41 · 126 阅读 · 0 评论 -
Qt中定时器使用的两种方法
Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类。 其精确度一般依赖于操作系统和硬件,但一般支持20ms。下面将分别介绍两种方法来使用定时器。方法一:QObject中的定时器的使用,需要用到三个函数1、 ...转载 2020-04-29 22:10:44 · 298 阅读 · 0 评论 -
QT的QDateTime与QString之间转换
1.QDateTime 转换为 QStringQString qtime; QDateTime time; time = QDateTime::currentDateTime(); time= time.toString("yyyy-MM-dd hh:mm:ss"); 2.QString 转换为 QDateTimeQString qtime; QDateTime t...原创 2020-04-29 21:54:48 · 1392 阅读 · 0 评论 -
QT5中如何将数据转换为JSON格式
1.简单JSON数据(1)首先加上有关JSON的头文件#include <QJsonDocument>#include <QJsonParseError>#include <QJsonObject>#include <QJsonValue>#include ...转载 2020-04-28 21:05:57 · 1593 阅读 · 0 评论 -
Qt5实现子线程读取串口数据上报至主线程
直接撸代码#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); //查找可用的串口 f...原创 2020-04-24 21:47:25 · 2272 阅读 · 2 评论 -
C++枚举类型最全解析
C++ 允许程序员创建自己的数据类型,比如本节要将的枚举类型。枚举数据类型是一种由程序员定义的数据类型,其合法值是与它们关联的一组命名整数常量。之所以被称为枚举类型,就是因为命名常量是作为数据类型定义的一部分而枚举或列出的,以下是枚举类型声明的示例:enum Roster {Tom, Sharon, Bill, Teresa, John};该语句将创建一个名为 Roster 的数据类型。...转载 2020-04-21 22:03:42 · 406 阅读 · 0 评论 -
C++函数指针
函数指针基础:1. 获取函数的地址2. 声明一个函数指针3.使用函数指针来调用函数获取函数指针:函数的地址就是函数名,要将函数作为参数进行传递,必须传递函数名。声明函数指针声明指针时,必须指定指针指向的数据类型,同样,声明指向函数的指针时,必须指定指针指向的函数类型,这意味着声明应当指定函数的返...转载 2020-04-21 21:12:01 · 130 阅读 · 0 评论 -
C++多态内幕
c++ 多态,就是利用了一个二级指针(指针数组),数组里的每个元素都指向了,用virtual修饰的成员函数。既然提到了指针,那就让我们用内存地址来证明一下吧。为了证明,我们必须要取到成员函数的首地址。利用下面的函数取得成员函数的地址template<typename dst_type,typename src_type>dst_type pointer_cast(sr...转载 2020-04-21 20:53:40 · 158 阅读 · 0 评论 -
Qt小白之选择何种开发方式(vs+qt or qt+mingw/msvc)
首先介绍下Qt常见的有多少种开发方式,一般我们常用的就是2种。第一种:纯QtCreator方式,QtCreator编码+MinGW或MSVC或其他编译。第二种:VS+Qt库,把Qt当成一个界面库来在VS中调用。VS编码+MSVC编译。 开发方式 VS+Qt ...转载 2020-04-21 20:23:07 · 4540 阅读 · 2 评论 -
Qt深入浅出(十八)MySql的使用
MySql的使用1 使用QSqlDataBaseQt数据中的管理类为QSqlDataBase,没有继承任何基类,需要在pro文件中添加QT += sql。代码如下:#include <QSqlDatabase>#include <QDebug>#include <QCoreApp...转载 2020-04-14 22:25:09 · 452 阅读 · 0 评论 -
Qt深入浅出(十七)多媒体
多媒体编程1 音频组件 Qt提供的多媒体可以从高层到底层进行访问, 以及处理音频的输出和输入。Qt为了开发基于多媒体的应用程序,可以使用QMediaPlayer类. 不仅支持从属的压缩音频格式,也支持用户安装的多媒体插件. &...转载 2020-04-13 21:44:40 · 570 阅读 · 0 评论 -
Qt深入浅出(十五)QTableView
QTableView 表格视图控件QTableView,需要和QStandardItemModel, 配套使用,这套框架是基于MVC设计模式设计的,M(Model)是QStandardItemModel数据模型,不能单独显示出来。V(view)是指QTableView视图,要来显示数据模型,C(contro...转载 2020-04-09 21:25:00 · 660 阅读 · 0 评论 -
C/C++中基本数据类型所占内存大小
C/C++中基本数据类型所占内存大小...转载 2020-04-07 21:40:56 · 727 阅读 · 0 评论 -
C++的指针危险与指针使用建议
//正确示例int a = 0;int * p = &a;原创 2020-04-04 13:47:10 · 313 阅读 · 0 评论 -
Qt深入浅出(十四)图形视图框架
图形视图框架 使用QPushButton、QLabel、QCheckBox等构成GUI的控件或自定义图形时,开发应用程序会变得很简单。但是如果想在GUI中使用数十个或者数百个图形对象,向用户完美展示控制场景,则会受到很多的限制。 图形视图框架用来...转载 2020-04-02 22:33:54 · 848 阅读 · 0 评论 -
QML入门大全
QML语法初见锚定left 左right 右top 顶部bottom 底部centerIn 中央fill 填充满verticalCenter 垂直中央horizontalCenter 水平中央anchors.left: parent //放在父对象左边rotation 旋转(瞬间旋转)onClicked: Wheel.rotation += 90 //点击时...转载 2020-03-23 21:49:10 · 721 阅读 · 0 评论 -
Qt文件QIODevice类解析与QIODevice::Truncate打开方式
类解析:文件打开方式:file.open(QIODevice::Truncate)枚举值 描述QIODevice::NotOpen 未打开QIODevice::ReadOnly 以只读方式打开QIODevice::WriteOnly 以只写方式打开QIODevice::ReadWrite 以读写方式打开QIODevice::Appen...原创 2020-03-22 16:12:39 · 18139 阅读 · 0 评论 -
Qt深入浅出(十三)多线程与定时器
多线程 我们之前的程序都是单线程运行,接下来我们开始引入多线程。就相当于以前的一个人在工作,现在多个人一起工作。 Qt中非常有必要使用多线程,这是因为,Qt应用是事件驱动型的,一旦某个事件处理函数处理时间过久,就会造成其它的事件得不到及时处理。 Qt中使用QThread来管理线程,一个QThread对象...转载 2020-03-19 22:42:03 · 1014 阅读 · 0 评论 -
Qt深入浅出(十二)2D绘图
2D绘图 之前我们使用 QPainter 在 QWidget 上绘图, 那么其实 QPainter 还能在任何 QPaintDevice上绘制, 继承至QPaintDevice 还有QPixMap、QImage、QPicture,那么它们的区别是. 1、使用 QPixMap 进行绘图,根据硬件显示进行优化...转载 2020-03-19 21:18:28 · 257 阅读 · 0 评论 -
Qt深入浅出(十一)事件处理机制与画笔
事件处理机制 什么是事件,比如当我们打开一个窗口, 如果我们不动鼠标或者键盘, 那这个窗口就永远静静的躺着, 只有我们使用鼠标点击,或者键盘按下键的时候, 窗口才会有对应的反应。那么这个过程中就是用户向窗口发送了事件。 在 Qt 的界面应用程序都是事件驱动的,程序的每个动作也都是由某个事件所触发。在Qt ...转载 2020-03-18 22:59:52 · 448 阅读 · 0 评论 -
Qt深入浅出(十)文件读写
文件读写 Qt中使用QFile类来操作文件的输入/输出。继承至QIODevice,QIODevice类是输入/输出设备的基类,为设备提供了公共实现和抽象接口用于读写块数据。QIODevice又继承至QObject。1 使用QFile打开文件QFile的构造函数QFile(const QString &...转载 2020-03-17 22:52:44 · 472 阅读 · 0 评论 -
Qt深入浅出(八)模态对话框
模式对话框 对话框可以分为模式对话框和非模式对话框两种。模式对话框是指用户只能在当前的窗体中进行操作,在该窗体没有关闭之前不能切换到其它的窗体。非模式对话框是指当前的所操作的窗体可以切换。 简单来说,屏蔽同一应用程序中其它窗口事件响应的对话框,就叫做模式对话框。 一般情况下,用于确认信息的操作对话框属于...转载 2020-03-16 22:21:42 · 799 阅读 · 1 评论 -
Qt深入浅出(七)QMainWindow
窗口类QMainWindow 普通的桌面应用程序有个共同的特性,有菜单栏、工具栏、状态栏、中央窗口等部件。菜单栏其实可以看成是一个窗口,菜单栏中的每一个菜单也可以看成一个窗口,每个部件基本都可以认为是一个窗口。那么这些典型的桌面应用可以认为是一些QWidget的组合,通过QWidget派生的方式也确实能够...转载 2020-03-15 22:18:40 · 626 阅读 · 0 评论 -
Qt深入浅出(六)设计师界面
Qt Designer 使用代码布置窗口不仅耗时,而且也不够直观,Qt Designer设计师工具可以帮我们摆脱这些繁琐的工作,Qt designer 是一款可视化的ui设计工具。 Qt Designer可以编辑好一个设计师界面,设计师界面一般是一个.ui后缀的文件,需要在.pro文件中添加变...转载 2020-03-15 22:07:46 · 721 阅读 · 0 评论 -
Qt深入浅出(五)信号与槽机制
信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。 信号和槽是QT自行定义的一种通信机制,它独立于标准的 C++ 语言,是标准C++的扩展。因此要正确的处理信号...转载 2020-03-12 22:18:51 · 587 阅读 · 0 评论 -
Qt深入浅出(四)布局管理器
布局管理器可以让程序员摆脱繁琐的窗口位置大小设置工作。并且布局管理器可以依据窗口大小变更布局控件的位置大小。 布局管理器基类为QLayout继承至QObject 和QLayoutItem,它是一个抽象基类,需要被进一步继承才能使用。它的派生类有QHBox...转载 2020-03-12 22:10:37 · 437 阅读 · 0 评论 -
Qt深入浅出(三)Qt的内存管理机制
4 内存管理机制一般我们不直接用QWidget来实例化对象,用它的派生类来生成对象,main函数中一般不写太多代码,都是在派生类的构造函数中进行窗口的初始化、布局、设置、其子窗口设置等等。例如:main.cpp#include <QApplication>#include "widget.h"...转载 2020-03-12 22:02:55 · 1301 阅读 · 0 评论