时光清浅,不觉多年
码龄4年
  • 157,574
    被访问
  • 147
    原创
  • 955,707
    排名
  • 42
    粉丝
  • 0
    铁粉
关注
提问 私信

个人简介:凡是过往,皆为序章。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2018-10-18
博客简介:

“时光清浅,不觉多年”的博客

博客描述:
记录所学、所遇、所思
查看详细资料
  • 4
    领奖
    总分 586 当月 21
个人成就
  • 获得114次点赞
  • 内容获得57次评论
  • 获得465次收藏
创作历程
  • 43篇
    2021年
  • 98篇
    2020年
  • 7篇
    2019年
成就勋章
TA的专栏
  • 笔记
    50篇
  • Qt相关
    62篇
  • C++相关
    91篇
  • C++调用第三方
    4篇
  • 网络
    1篇
  • C++文件操作
    4篇
  • 文本格式
    2篇
  • 我的Qt
    4篇
  • 设计模式
    1篇
兴趣领域 设置
  • 大数据
    mysql
  • 后端
    架构
  • 服务器
    linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Qt传递自定义类型时槽函数不响应的原因及解决方案

因项目需要,在线程中进行数据解析结束之后,需要将处理后的数据值通过信号的方式传递出来。这个值是一个自定义的类型,里面定义了解析之后的格式。typedef struct test_type{ //......}TEST_TYPE;然后就是连接信号槽了,如下:connect(pThread, SIGNAL(dataResult(TEST_TYPE)), this, SLOT(onDataResult(TEST_TYPE)));然后发现槽函数死活进不去,在查阅资料之后,找到了两种解决方法:
原创
发布博客 2021.09.03 ·
1720 阅读 ·
4 点赞 ·
0 评论

关于QThread在设置parent之后,在程序关闭的时候出错问题的分析及解决方法

现象因项目需要,写了一个继承自QThread的线程类用于处理数据信息。在给继承的线程类添加了父对象之后,程序可以正常执行,但是在关闭的时候报了如下的错误:添加父对象的伪代码如下:MyThread *pThread = new MyThread(this);pThread->start();原因分析借着报错信息,提示了Destroyed while thread is still running,直译过来就是在线程仍然运行的情况下,把它摧毁了。也就是说线程还在跑的情况下,执行了其析构
原创
发布博客 2021.09.03 ·
148 阅读 ·
0 点赞 ·
0 评论

QCheckBox使用时候的一个注意点

项目中需要使用一个QCheckBox来控制某些界面的显隐,并且在不满足条件的情况下,需要将CheckBox的值恢复到原先的状态。如CheckBox本身控制着远端设备的启停,从unchecked状态点击,按理说会启动设备,并将CheckBox状态变为checked。但是如果在启动的过程中失败了,这个时候需要恢复CheckBox的状态。这就是项目的需求。为了实现状态的恢复,特意设计了一个recover函数,最开始的一版使用的是setChecked()函数,如下:void recoverState(boo
原创
发布博客 2021.09.01 ·
408 阅读 ·
1 点赞 ·
1 评论

构造函数不支持多态

今天在写项目的时候,需要使用到多态的效果,因此就设计了三个类,一个基类,一个派生类,外加一个派生类中需要使用到的界面类。大体结构如下:///< 基类 >// 头文件#pragma once#include <QtWidgets/QMainWindow>#include "ui_wgttest.h"class QTabWidget;class WgtTest : public QMainWindow{ Q_OBJECTpublic: Wgt
原创
发布博客 2021.08.28 ·
68 阅读 ·
0 点赞 ·
0 评论

构造函数不支持多态

今天在写项目的时候,需要使用到多态的效果,因此就设计了三个类,一个基类,一个派生类,外加一个派生类中需要使用到的界面类。大体结构如下:///< 基类 >// 头文件#pragma once#include <QtWidgets/QMainWindow>#include "ui_wgttest.h"class QTabWidget;class WgtTest : public QMainWindow{ Q_OBJECTpublic: Wgt
原创
发布博客 2021.08.28 ·
68 阅读 ·
0 点赞 ·
0 评论

构造函数不支持多态

今天在写项目的时候,需要使用到多态的效果,因此就设计了三个类,一个基类,一个派生类,外加一个派生类中需要使用到的界面类。大体结构如下:///< 基类 >// 头文件#pragma once#include <QtWidgets/QMainWindow>#include "ui_wgttest.h"class QTabWidget;class WgtTest : public QMainWindow{ Q_OBJECTpublic: Wgt
原创
发布博客 2021.08.28 ·
68 阅读 ·
0 点赞 ·
0 评论

QTreeWidget的右键菜单实现

前言因为QTreeWidget有明确的父子关系,这个特点使得其可以有着明确的分级关系,对于具有明显从属关系的节点的控制是非常好的。但是也是由于这个特点,导致如果需要对其进行右键菜单的分级别展示(不同层级的节点具有不同的右键菜单)会有一定的困难。鉴于此,特意整理了一下对于这个问题的处理方式,具体的逻辑可分为两种:重写QTreeWidgetItem的方式 —— 通过dynamic_cast来确认级别(也可通过设置type的方式)设置type的方式 —— 通过type来确定级别对于不需要特殊存储的
原创
发布博客 2021.08.26 ·
1292 阅读 ·
1 点赞 ·
0 评论

C++和Qt的方式判断IP地址是否合法

在接触的项目中,遇到了需要判断IP地址是否合法的需求,用纯C++和Qt的方式,分别写了一种,如下所示。Qt的方式:bool ipAddrIsOK(const QString & ip){ if (ip.isEmpty()) { return false; } QStringList list = ip.split('.'); if (list.size() != 4) { return false; } for (const auto& num : list
原创
发布博客 2021.08.12 ·
420 阅读 ·
1 点赞 ·
1 评论

VS中bool值为true(205)的解决方法

今天在调试代码的时候,发现一个bool值判断式的返回值一直有问题,明明两个值都是true,但是判断的返回值却是false,一直进不了期望的分支。if (m_active == active){ // do sth.}else{ // do sth.}后面打断点跟踪,发现其中一个值为true(205),另一个值是true,没有下标,如下图所示:这让我很困惑,查了资料之后发现,这与VS本身的初始化值有关系:当一个函数的参数返回值是bool的时候,如果将这个函数表达式直接作为参数传递给
原创
发布博客 2021.08.10 ·
326 阅读 ·
0 点赞 ·
0 评论

VS控制台中文显示乱码的一种解决方法

VS控制台默认的是GBK编码,如下图所示,对于UTF-8格式的中文展示不友好,一直显示乱码。而我的文件基本都是按照UTF-8的格式进行编码的,然后读取的数据也是这种格式,如果仅仅是进行展示,其实可以通过改变控制台编码的方式来更改显示,如下:#include <iostream>#include "Windows.h"int main(int argc, char* argv[]){ // 更改控制台输出编码 —— 65001表示UTF-8编码格式 SetConsoleOutpu
原创
发布博客 2021.08.09 ·
762 阅读 ·
1 点赞 ·
1 评论

使用C++进行字符串转数字注意点

为了操作方便起见,我在项目中使用到的转换函数是C++中string自带的诸如stoi等的转换函数,而不是C风格的ctoi等方法,但是使用这些方法需要几个注意点:1. 字符串不能为空;2. 字符串中不能有特殊字符。这两点对于字符串转为数字而言非常重要,这也就对代码提出了一些要求:1. 转换之前先判空;2. 判断是否有特殊字符。鉴于此,特意写了一个判断函数,源码如下:bool strIsOK(const std::string & rawData) const{ auto iter =
原创
发布博客 2021.08.09 ·
45 阅读 ·
0 点赞 ·
0 评论

更改浮点型数据显示小数位数的方法

因工作需要,需要将float类型的数据通过字符串的方式进行展示。在使用to_string()函数进行转换的过程中,出现了一点问题,因为精度丢失的问题,某些情况下数据的展示不正常,例如某个数据位-180,但是在通过to_string()进行转换之后,就变成了如下图所示的样子:鉴于此,在查阅了相关的资料之后,将相关的解决方法展示如下。方法一:使用"setprecision"+"字符流"的方式在查阅资料的过程中,首先映入眼帘的是就是通过C++中的setprecision的方式修改显示的精度。但是查阅到
原创
发布博客 2021.07.09 ·
629 阅读 ·
0 点赞 ·
0 评论

如何防止数据库中的表格被重复创建

对于一个项目而言,对于一个数据库的使用不会是单次的,如果数据库的创建操作是在软件启动的时候完成的,那么如何保证数据库中的表格不会被重复创建呢?以下提供两种思路。1. CREATE TABLE IF NOT EXISTS table_name第一种方式就是通过添加 IF NOT EXISTS 限定词来确保只有在表格不存在的情况下才会创建。CREATE TABLE IF NOT EXISTS student_info( id INT NOT NULL AUTO_INCREMENT PRIM
原创
发布博客 2021.06.17 ·
432 阅读 ·
0 点赞 ·
0 评论

Qt的数据库事务

事务的最大的功能就是保证数据库操作的原子性。启动事务之后,如果没有异常,则可以正常提交;如果操作过程中有任何的异常,则回滚至开始的状态。Qt的数据库事务操作示例代码如下(仅做演示用,没有进行相应的判断功能):#include <QSqlDatabase>#include <QSqlQuery>#include <QSqlError>#include <QMessageBox>#include <QSqlDriver>#includ
原创
发布博客 2021.06.17 ·
383 阅读 ·
0 点赞 ·
0 评论

QLineEdit的焦点事件

文章目录前言焦点事件QLineEdit焦点事件测试使用事件过滤器的方式重写QLineEdit的方式操作系统对于焦点事件的影响结论前言在项目中,遇到了在通过焦点事件调用系统输入法显示异常的情况,后来发现问题发生在焦点事件上,在调用输入法以及关闭输入法的时候出现了焦点的转移,这就导致输入法一直被调用。就特意研究了一下Qt的焦点事件,以及通过QLineEdit进行一些测试操作。焦点事件在应用程序中,都会有一个当前窗口,即当前获得焦点事件的窗口,这个窗口可以接受键盘的输入。焦点事件分为FocusIn和F
原创
发布博客 2021.05.31 ·
2559 阅读 ·
3 点赞 ·
0 评论

教训:接收缓冲区一定要记得清空

有一个需求是需要程序获得本机的ip配置,因此采用的方式是通过C++代码调用ipconfig的方式获得。在网上查阅了相关的资料之后,最终选择采用调用CreateProcess的方式获取。部分代码如下:string getIpconfigCommandResult(){ string command("ipconfig"); unsigned len = command.size() * 2; setlocale(LC_CTYPE, ""); wchar_t *p = new wchar_t[l
原创
发布博客 2021.05.19 ·
205 阅读 ·
0 点赞 ·
0 评论

正则表达式简述

注:本文仅用于介绍正则表达式中的基本概念和语法。正则表达式:Regular Expression所以在Qt中如果想要使用正则表达式,需要包含头文件QRegExp,在C++中使用正则表达式的话,需要包含的头文件是regex。正则表达式,顾名思义,是一种符合正确规则的表达式,里面重要的点在于 “正确” ,也就是符合期望,它是一种字符串匹配的模式。1. 表现形式正则表达式的表现形式是一串字符串,在这串字符串中包含了我们希望能够正确匹配的规则。2. 字符分类字符分为两类:普通字符、特殊字符(元字符)
原创
发布博客 2021.05.14 ·
45 阅读 ·
0 点赞 ·
0 评论

C++中使用lua脚本

还是因为项目的原因,需要在C++中使用到lua脚本,使用到的就是普通的lua库,可以在这里下载。1. 项目中导入lua模块创建工程后,在项目中导入lua模块,一个是lua的头文件,还有就是lua的lib库关于lib库,比较简单的使用方式就是直接使用这个以-static结尾的静态库即可,比较方便,无需其他操作。2. 使用先创建一个lua脚本,比较简单,就定义了一个字符串、一个表格、两个函数(一个有参,一个无参)。如下:mystr = "I'm lua"myTable = {name = "
原创
发布博客 2021.04.22 ·
1273 阅读 ·
2 点赞 ·
3 评论

笔记:关于QMap使用时候的一点技巧

这篇博客纯粹是笔记,非技术类探讨,用于记录一下我在使用QMap的时候发现的一个小技巧。今天设计界面的时候遇到一个现象,就是对于界面上的某些控件(如button)而言,在没有找到对应的数据的时候,需要显示一个默认的值(比如显示“请选择)。因为采用的容器是QMap,因此在获得某个值之前需要先找一下看看这个数据是否存在在QMap容器中,如果存在就直接将数据拿出展示,如果没有,就显示为默认值。示例代码如下:QMap<int, QString> testNamesMap;......ui.te
原创
发布博客 2021.04.21 ·
301 阅读 ·
0 点赞 ·
3 评论

使用QButtonGroup时如何做到消除全部选中项

在使用QButtonGroup的时候,为了做到只有一个被选中,因此使用到了:m_btnsBtnGroup->setExclusive(true);这一个有一个比较大的问题,但是在有一个被选中了之后,就无法恢复到全部未选中的状态,就一直会处于有且一个被选中的状态。但是有的时候需要恢复到未选中的状态,此时可以采用添加一个隐藏的按钮然后将之选中的方法,做到其他按钮看起来是没有被选中的状态。示例代码:///< 设置隐藏按钮m_pCleanBtn->setVisible(false);
原创
发布博客 2021.04.20 ·
1155 阅读 ·
3 点赞 ·
3 评论
加载更多