![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
Sparrow_du
这个作者很懒,什么都没留下…
展开
-
C++父类和子类同名函数及继承关系---多态
C++当子类的成员函数与父类的成员函数重名时:若父类没有virtual声明,子类函数可以和父类函数返回值不同,但函数名和参数列表必须相同.则子类实例通过"."调用的是子类的函数若子类想调用父类的函数,则需要使用 子类实例.父类::函数名() 的形式.父类实例通过"."调用的是父类的函数父类无法调用子类的同名函数若通过指针->调用则指针的类型 决定 调用哪个类的函数父类地址强制转换为子类指针 也可以调用子类的函数.若父类有virtual声明虚函数就原创 2022-02-16 19:10:10 · 5706 阅读 · 0 评论 -
C++中的<>作用
在模版中使用比如list<int>,是在传递类型,在程序编译期用<int>进行实例化。声明类模版template <typename T> MyClass{ ...}使用:MyClass<int>;可以传递参数template <typename T, int m, int n> MyClass{ enum {rows = m, cols = n};}在编译器就指定...原创 2021-06-22 16:56:27 · 11310 阅读 · 0 评论 -
正则表达式非捕获分组?:
正则表达式笔记?:表示非捕获分组,只匹配但是不捕获后面内容,其后有子表达式时会捕获子表达式中内容如:(?:a(b))?解析:(?:a(b))整体可有可无,无时匹配内容为空当有ab时,匹配ab,但不捕获a,捕获b示例:(?:a(b))?xxxbxxabxxxx匹配结果b...原创 2021-04-14 14:00:32 · 384 阅读 · 0 评论 -
Double得有效位
Double得有效位QDoubleSpinBox * double_spin_box = dynamic_cast<QDoubleSpinBox *>(ui->VarEditTableWgt->cellWidget(0, 0)); var.value = double_spin_box ? QString::number(double_spin_box->value(), 'g', 18) : "0";原创 2020-09-22 15:08:34 · 320 阅读 · 0 评论 -
QT正则表达式截取字符串末尾数字
QRegExp rx("\\d+$"); rx.indexIn(old_name, 0); QString end_num = rx.cap(0);说明1、int QRegExp::indexIn(const QString &str, int offset = 0, QRegExp::CaretMode caretMode = CaretAtZero) const从字符串str的位置offset开始匹配,返回匹配到的字符串的开始位置2、QString Q...原创 2020-07-09 16:45:29 · 2547 阅读 · 1 评论 -
QT编译静态库与动态库
静态库在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。静态库与.o文件格式相似,可以看成是一组目标文件(.o/.obj)的集合,即很多目标文件压缩后打包形成的一个文件。静态库特点:I 静态库对函数库的链接是放在编译期完成的。II 程序在运行时与函数库再无瓜葛,移动方便。III 浪费空间和资源,因为所有的目标文件相当于拷贝进了可执行文件。动态库在编译时不会被链接到目标代码中,而是在程序运行时才被载入。不同的应用程序如果调用相同的库,那么在内存里只需要有一份原创 2020-05-28 13:49:54 · 5217 阅读 · 0 评论 -
QTcpSocket简单使用
QTcpServer类提供一个TCP基础服务类 继承自QObject这个类用来接收到来的TCP连接,可以指定TCP端口或者用QTcpServer自己挑选一个端口,可以监听一个指定的地址或者所有的机器地址。调用listen()来监听所有的连接,每当一个新的客户端连接到服务端就会发射信号newConnection()调用nextPendingConnection()来接受待处理的连接。返回一个连接的QTcpSocket(),我们可以用这个返回的套接字和客户端进行连接如果有错误,serverErr.原创 2020-05-22 17:35:55 · 7624 阅读 · 0 评论 -
QThread实现多线程
线程是系统调度的最小单元,一个进程可以包含多个线程,作为任务的真正运作者,有自己的栈(Stack)、寄存器(Register)、本地存储(Thread Local)等,但是会和进程内其他线程共享文件描述符、虚拟地址空间等。进程可以多了解QProcess,并且QT提供了多种进程间通信的方式,包括TCP/IP,共享内存,D-BUS,QT通信协议,你可以分别通过帮助文档了解QtNetwork模块,QSharedMemory类,D-BUS(QtDBus模块),QCopChannel来使用它们,并且是可以加锁来同原创 2020-05-20 10:16:44 · 376 阅读 · 0 评论 -
虚函数中调用父类同名虚函数
1、在虚函数实现中直接通过父类调用BaseFrame::print();2、通过对象指针调用print = new PrintObject();print->print();print->BaseFrame::print();原创 2020-05-15 15:46:10 · 2541 阅读 · 0 评论 -
QT获取文件路径
QString file_path = QFileDialog::getOpenFileName(nullptr, tr("Import File"), "/", "txt(*txt)");QFile txt_file(file_path);if(txt_file.open(QIODevice::ReadOnly | QIODevice::Text)) { QByteArray line = txt_file.readLine(); QString params(line);.原创 2020-05-14 15:54:29 · 1242 阅读 · 0 评论 -
QT、C++面试中的几个问题
1、虚析构delete基类指针指向派生类时防止子类的数据不会被释放造成内存泄漏当父类指针指向子类时,只会调用父类析构函数,子类析构函数不被调用,会造成内存泄漏将父类的析构函数定义为虚析构函数,那么父类指针会先调用子类析构,再调用父类析构,使内存得到释放静态库和动态库在运行期某变量发生变化,调用者能否感知静态库是在编译期进行连接,相当于拷贝了一份代码,特点是程序在运行时与函数库再无瓜葛,移植方便,缺点是浪费空间和资源,因为所有相关得目标文件与牵涉到得函数库被链接合成一个可执行文件,程序得更新、原创 2020-05-12 10:23:18 · 1949 阅读 · 0 评论 -
QLineEdit用正则表达式限制double类型输入,double转为9位小数的字符串
QRegExp double_rx10000("10000|([0-9]{0,4}[\.][0-9]{1,6})");ui->edtOffset_0->setValidator(new QRegExpValidator(double_rx10000, ui->edtOffset_0));double new_x;QString::number( new_x, ...原创 2019-12-27 11:13:46 · 672 阅读 · 0 评论 -
QT 导出.csv文件
QString file_name = QFileDialog::getSaveFileName(m_wgt, tr("Choice file"), "./", "*.csv");QFile out_file(file_name);if (!out_file.open(QIODevice::WriteOnly | QIODevice::Text)) return;for (int i ...原创 2019-12-12 14:23:12 · 1060 阅读 · 0 评论 -
git 打 tag
通常在发布软件的时候打一个tag,tag会记录版本的commit号,方便后期回溯。列出已有的taggit tag新建tag使用git tag命令跟上tag名字,直接创建一个tag。git tag v1.0还可以加上-a参数来创建一个带备注的tag,备注信息由-m指定。如果你未传入-m则创建过程系统会自动为你打开编辑器让你填写备注信息。git tag -a ...原创 2019-11-28 09:58:49 · 597 阅读 · 0 评论 -
Qt warning : 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
Qt警告warning : 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失解决办法:用记事本打开报警文件,点击另存为,保存时编码选择 “带有BOM的UTF-8”,替换原有文件。...原创 2019-11-27 17:49:04 · 3318 阅读 · 3 评论 -
Git部署Git使用Git子模块
1、部署SSH keys打开终端执行(使用注册git使用的邮箱地址)ssh-keygen -t rsa -C "xxxx@xx.com"察看密钥cat ~/.ssh/id_rsa.pub将密钥复制到getlab中,添加即可2、本地使用gitgit init //在当前文件夹中初始化本地仓库git init filename ...原创 2019-02-28 15:49:15 · 882 阅读 · 0 评论 -
Qt5,信号槽关联错误
一、错误提示error: C2664: “QMetaObject::Connection QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const”: 无法将参数 2 从“overloaded-function”转换为“const char *”二、错误原因1、Qt5的con...原创 2019-11-22 16:40:00 · 1412 阅读 · 0 评论 -
使用QtXlsx读写Excel文件
一、获取QtXlsxhttps://github.com/dbzhang800/QtXlsxWriter二、编译1、下载并解压,得到如下文件2、用QtCreater打开,仅构建src项目即可3、构建报错,将QList改为QVector即可,需要添加#include <QVector>4、编译成功后得到如下目录5、拷贝bin目录下文件到Qt安装...原创 2019-11-18 20:40:10 · 6279 阅读 · 7 评论 -
QTreeWidget实现勾选、半勾选、未勾选
seletemenuwidget.h#ifndef SELETEMENUWIDGET_H#define SELETEMENUWIDGET_H#include <QWidget>#include <QTreeWidgetItem>namespace Ui {class SeleteMenuWidget;}class SeleteMenuWidget...原创 2019-11-11 17:50:09 · 815 阅读 · 0 评论 -
软件开发需求整理概要
一、需求背景说明产生这个需求的原因,或者当时是在什么情况下提出这样的需求,是否有特殊原因等。需求背景对于开发人员进入业务角色、理解业务有一定帮助。二、需求来源说明这些需求来源点,一般来源于业务部门、产品部门、支持中心、客服反馈等。三、需求确认对提出的需求,由项目经理、小组长整理制定,并向需求提出、反馈部门确认,以确保反馈方与落实方对需求理解无误。四、功能点整理由项目...转载 2019-11-06 15:41:12 · 1430 阅读 · 0 评论 -
千万不能返回局部变量的引用
C++Primer第7章函数一节,讲到返回时,“理解返回引用至关重要的是,千万不能返回局部变量的引用”,意思是返回程序内部定义的变量时可能会出问题,因为当函数执行完毕后,将释放分配给局部对象的存储空间。此时,对局部对象的引用就会指向不确定的内存。...原创 2019-03-12 19:55:40 · 1739 阅读 · 0 评论 -
JSonCpp库使用
json解析库JsonCpp的使用方法一编译链接1在相应官网下载jsoncpp2解压得到jsoncpp-src-0.5.0文件3打开jsoncpp-src-0.5.0->makefiles->vs71->jsoncpp.sln4转换项目为当前VS格式5选择debug模式,调成64位,因为我的系统是64位6在“解决方案资源...原创 2019-04-16 17:35:55 · 1529 阅读 · 0 评论 -
windows和linux之间共享文件 samba的使用
具体方法可以参考https://blog.csdn.net/qq_25105061/article/details/81662497连接成功后如图,注意连接时输入ip:\\192.168.2.108 注意\\如果想像使用本地文件一样使用共享文件也是可以的,因为samba本在就是Windows下的文件共享协议,右键点击上图中的share文件夹,选择映射网络驱动器,即可...原创 2019-05-21 20:13:49 · 620 阅读 · 0 评论 -
boost库编译
转载https://www.cnblogs.com/zhcncn/p/3950477.html需要注意,boost默认是自动连接,所以会报缺少一些你没使用的库,如下图所以再.pro文件中添加如下宏即可DEFINES += BOOST_ALL_NO_LIBDEFINES += BOOST_ALL_DYN_LINK...转载 2019-05-27 17:46:21 · 220 阅读 · 0 评论 -
QProcess实现交互式命令
首先,QProcess不能获取二级子进程的输入和输出比如执行不了ssh,如果是使用ssh请参考我另一篇文章,QSsh的使用这里以调用cmd为例.h#ifndef DIALOG_H#define DIALOG_H#include <QDialog>namespace Ui {class Dialog;}class Dialog : public ...原创 2019-06-13 20:30:32 · 2809 阅读 · 4 评论 -
QSsh使用
QSsh源码可以在网上下载,这里就不介绍.h#ifndef DIALOG_H#define DIALOG_H#include <QDialog>#include <sshconnection.h>#include <sshremoteprocess.h>#include <sftpchannel.h>using namespa...原创 2019-06-14 10:12:22 · 8020 阅读 · 16 评论 -
QProcess 使用
我的项目是使用命令行进行samba映射网络到虚拟磁盘QProcess process;process.setProgram("cmd.exe");QStringList wCmd;wCmd << "/c" << "net use Z: \\\\192.168.2.109\\nfs_space"; 以下两条指令也可以使用,但是"/c"不可少//&...原创 2019-06-04 13:52:40 · 742 阅读 · 0 评论 -
zlib再windows下的编译
下载了zlib1.2.8。解压之后,找到./win32/Makefile.msc打开之后,开头的注释部分就是如何在Windows下用VC编译的方法。# nmake -f win32/Makefile.msc (standard build)# nmake -f win32/Makefile.msc LOC=-DFO...原创 2019-06-17 19:23:28 · 435 阅读 · 0 评论 -
QT打包程序
Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。以官方 Qt 5.4.0+MinGW 开发环境为例,从开始菜单--》Qt 5.4.0--》5.4--》MinGW 4.9 (32-bit)--》Qt 5....转载 2019-06-27 17:42:25 · 287 阅读 · 0 评论 -
QT5.12界面再win10下总是莫名卡死
1、删除C:\Users\用户名\AppData\Roaming文件下的QtProject文件夹即可2、设置兼容模式,且以管理员身份运行此程序原创 2019-08-08 21:10:49 · 2484 阅读 · 0 评论 -
QT + OSG实现触屏旋转和双指缩放
1、为了能够触发触屏事件,需要将窗口属性设为Qt::WA_AcceptTouchEventssetAttribute(Qt::WA_AcceptTouchEvents);2、重新实现eventbool OsgContainer::event(QEvent *event){ QEvent::Type type = event->type(); if(typ...原创 2019-08-27 17:50:01 · 2679 阅读 · 0 评论 -
Qt实现带验证码的输入框
效果如图:1、logonwidget.h文件#ifndef LOGONWIDGET_H#define LOGINWIDGET_H#include <QWidget>#include <QPushButton>#include <QLabel>#include <QLineEdit>#include <QTimer&g...原创 2019-09-19 16:43:14 · 1556 阅读 · 0 评论 -
continue,return,break 在for循环中的作用
1、continue跳出当前循环,即不执行continue后的语句,进入下次循环2、break跳出for循环,不再进行下次循环,但可以执行for之外的语句3、return跳出for循环,且不执行for之外的语句,直接跳出当前函数,返回return后的值...原创 2019-03-12 18:06:45 · 3222 阅读 · 0 评论