TanChengkai
码龄9年
关注
提问 私信
  • 博客:116,390
    社区:2,506
    118,896
    总访问量
  • 21
    原创
  • 1,795,299
    排名
  • 16
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2015-11-05
博客简介:

TanChengkai的博客

查看详细资料
个人成就
  • 获得132次点赞
  • 内容获得25次评论
  • 获得444次收藏
  • 代码片获得559次分享
创作历程
  • 19篇
    2019年
  • 2篇
    2016年
成就勋章
TA的专栏
  • Qt
    15篇
  • C++
    6篇
  • Linux
    4篇
  • alsamixer
    1篇
  • WebSocket
    2篇
兴趣领域 设置
  • 大数据
    mysql
  • 人工智能
    语音识别
  • 服务器
    linux
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Qt中自定义qDebug打印信息的宏(文件名,行数,时间等等)

前言QDebug类提供用于调试信息的输出流。当开发人员需要将调试或跟踪信息写到设备,文件,字符串或控制台时,将使用QDebug。当我们使用qDebug()打印信息时,只有我们所需要打印的信息,在此自定义一个宏,可以额外打印文件名,函数,行数,时间等等。示例#include <QDebug>//注意,头文件一定要添加#define MYLOG qDebug(...
原创
发布博客 2019.11.28 ·
5452 阅读 ·
20 点赞 ·
0 评论 ·
33 收藏

vector<char>与char*相互转换

最近在做网络通信,看到很多人使用vector<char>来存储二进制网络数据,而我有时需要用char*数据,所以记录下二者的相互转换方法,代码如下:#include <cstring>#include <vector>using namespace std;int main(int argc, char *argv[]){ vector...
原创
发布博客 2019.11.21 ·
18968 阅读 ·
4 点赞 ·
1 评论 ·
35 收藏

QMap的简单使用(增删改查等)

前言QMap是Qt提供的容器类,是一种由key到value的映射。与C++中STL提供的map使用方法相同,部分使用细节上,QMap做了优化。插入QMap<int, QString> mapTest_;mapTest_.insert(1, "1111"); //直接插入mapTest_[2] = "2222"; //另一种方式的插入if(!mapT...
原创
发布博客 2019.11.20 ·
13433 阅读 ·
7 点赞 ·
0 评论 ·
38 收藏

QLockFile实现只运行一个程序实例

前言我们有时候希望程序只运行一个实例,避免同程序相互竞争,在上一章写到用QLockFile实现独占的方式读写文件后,意外发现QLockFile作为“防火墙”就可以实现这个要求。Qt中QLockFile实现以独占的方式读写文件实现在程序的main函数中,用QLockFile创建一个临时文件,程序关闭则临时文件清除,如果此时有第二个或多个同程序启动,就会创建文件失败,直接返回,那么第二...
原创
发布博客 2019.10.12 ·
792 阅读 ·
1 点赞 ·
1 评论 ·
5 收藏

Qt编译出错:undefined reference to `vtable for XXX'

前提在一个已编译的Qt项目中添加了一个类,该类未继承QObject且未在头文件添加Q_OBJECT,如下://MySignalSlot.h文件#ifndef MYSIGNALSLOT_H#define MYSIGNALSLOT_Hclass MySignalSlot{public: MySignalSlot();};#endif // MYSIGNALSLOT_...
原创
发布博客 2019.10.09 ·
631 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Qt中QLockFile实现以独占的方式读写文件

前提当不同进程或线程读写同一个文件时,会导致冲突,那么这个时候就需要以独占的方式来读写文件(更好的方法是共享读,互斥写,此处不做讨论)。问题查询Qt的帮助文档,发现QLockFile类,该类提供使用文件的进程之间的锁定,比较接近我的要求。但是用过以后发现QLockFile根本没有继承QIODevice,也没有提供任何文件读写接口。只是在lock()/tryLock()的时候自动生成...
原创
发布博客 2019.10.09 ·
5326 阅读 ·
4 点赞 ·
4 评论 ·
18 收藏

QTableWidget中添加QComboBox/QPushButton控件并响应控件点击

QTableWidget是QT程序中常用的显示数据表格的空间,里面不仅仅可以添加文字,也可以添加控件,图片等等,此处以添加QCombobox和QPushButton举例,点击选择控件以后,可以获得哪一行哪一列的信息。主要是以下几行代码://创建一个QComboBox控件QComboBox *comBox_ = new QComboBox();//设置QComboBox的itemco...
原创
发布博客 2019.10.08 ·
10420 阅读 ·
27 点赞 ·
6 评论 ·
78 收藏

Qt绘制电量图

效果图:最近在整理代码,发现我之前做的一个demo,绘制简单的电量显示图,感觉蛮有意思的,区别于现在类似手机上进度条似的电量显示,在此分享一下,希望大家喜欢!代码:/** ****************************************************************************** * @file MyStorag...
原创
发布博客 2019.09.30 ·
1812 阅读 ·
4 点赞 ·
1 评论 ·
17 收藏

C/C++获取CPU核数

最近开始做服务器,要求获取当前的CPU核数,就做了个Demo,获取CPU核数。系统环境:ubuntu16.04CPU信息:Intel® Core™ i5-7200U CPU @ 2.50GHz × 4代码如下(跨平台):#include <stdio.h>#if WIN32#include "windows.h"#else#include "unistd.h"...
原创
发布博客 2019.09.27 ·
3754 阅读 ·
3 点赞 ·
1 评论 ·
9 收藏

C++实现WebSocket解析协议

前提:本人最近做的项目,服务器端用的是C++写的,而与客户端交互用的是websocket,服务器端要想正常的使用数据,必须要对websocket协议进行解析。解析握手协议见我上一章内容: C++实现websocket服务器握手协议WebSocket数据格式FIN:表示这个数据是不是接收完毕,为1表示收到的数据是完整的,占1bit RSV1~3:用于扩展,通常都为0,各占1bi...
原创
发布博客 2019.09.27 ·
2731 阅读 ·
2 点赞 ·
1 评论 ·
10 收藏

Qt执行bash命令并获取返回结果

当我们在命令行执行相应操作时,会有对应的结果显示,如在ubuntu的终端输入:ls,显示如下:tck@tck:~/learn/MyProcess/MyProcess$ lsmain.cpp MyProcess.pro MyProcess.pro.usertck@tck:~/learn/MyProcess/MyProcess$ 那么当我们代码中执行相应的bash命令,如何获取返回的...
原创
发布博客 2019.09.26 ·
4232 阅读 ·
2 点赞 ·
1 评论 ·
17 收藏

Qt中继承QWidget设置样式表失效

在使用Qt的界面时,经常会自定义控件,当我们自定义QWidget控件,即写一个MyWidget,继承自QWidget,在MyWidget中设置样式表,实际运行程序,会发现样式表设置没有效果。原因:qt的样式表需要通过paintEvent函数来实现,而继承自QWidget的控件,QWidget的paintEvent函数实现为空,也就导致了设置样式表是无法生效的。解决方法:在继承的类中,重...
原创
发布博客 2019.09.26 ·
1754 阅读 ·
2 点赞 ·
0 评论 ·
9 收藏

Lubuntu自动登录(修改配置文件)

使用Lubuntu系统时,有时需要开机自动登录,无需输入密码这一繁琐项,只需要修改两个配置文件即可。1. 修改/etc/lxdm/default.conf文件命令行输入命令:sudo nano /etc/lxdm/default.conf修改或添加一行:autologin = tck #autologin需要自己根据系统用户名填写,本人此处用户名tck2. 修...
原创
发布博客 2019.09.26 ·
2354 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

C++实现websocket服务器握手协议(使用Qt)

前提:笔者在开发server程序时,要求websocket与server连接websocket的机制是在第一次连接时进行握手协议,协议通过,才可以进行正常的通信,否则websocket就会断开连接;下面就是websocket第一次发送的握手包:GET / HTTP/1.1\r
Host: 192.168.5.24:17913\r
User-Agent: Mozilla/5.0...
原创
发布博客 2019.09.25 ·
1948 阅读 ·
2 点赞 ·
1 评论 ·
9 收藏

Qt中通过Qpixmap设置图片透明度

最近看到美图秀秀的一些功能,可以手动设置图片的透明度并显示在其它图片上,所以自己动手做了个小Demo,实际效果如下:(图片仅供参考使用)可以看到拖动下方进度条,可以控制左上角图片的透明度。方法如下:新建一个Qt项目,在UI界面上拖放一个QLabel和一个QSlider,设置QSlider的数值范围为0~255,简单布局下即可。代码如下:#ifndef WIDGET_H...
原创
发布博客 2019.09.06 ·
9983 阅读 ·
8 点赞 ·
2 评论 ·
25 收藏

undefined reference to `boost::system::generic_category()‘

在学习boost::asio时,第一次使用,编译出现问题:代码如下:#include <boost/asio.hpp>#include <boost/thread.hpp>#include <iostream>void handle1(const boost::system::error_code &ec){ std::cou...
原创
发布博客 2019.09.06 ·
2517 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

Qt对当前界面进行截图并保存

Qt提供了对界面截图的功能,非常简单,只需要2行即可截图并保存下来,如下:QPixmap pixMap_ = QPixmap::grabWidget(this);pixMap_.save("./myImage.png");只为记录,只为分享! 愿所写能对你有所帮助。不忘记点个赞,谢谢~...
原创
发布博客 2019.09.05 ·
2973 阅读 ·
1 点赞 ·
2 评论 ·
12 收藏

linux下解决alsamixer重启后设置失效的问题

为了解决麦克风增强会增加噪音录入,故使用alsamixer将麦克风增强关闭(0%);设置了麦克风增强以后,并保存,但是每次重启后,之前设置的alsamixer又会被重置。保存设置为:alsactl --file ~/asound.state store为了解决此问题,我写了个脚本来解决,脚本名称:autoStartAudio.sh脚本路径是:/home/t3/脚本如下:...
原创
发布博客 2019.09.05 ·
2477 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

QT绘制仪表盘

最近在整理代码,发现以前写的绘制仪表盘Demo,特发出记录下。显示的效果如下:直接上代码:#ifndef T3DASHBOARD_H#define T3DASHBOARD_H/** ****************************************************************************** * 公司 T3 *...
原创
发布博客 2019.09.05 ·
3926 阅读 ·
8 点赞 ·
1 评论 ·
36 收藏

QT实现鼠标右键快捷菜单(QTableWidget)

对于右键点击事件,这里用到的是Qt::CustomContextMenu方法,本例通过右点QTableWidget,显示下拉菜单,同时获得点击的行号。 ui界面如下图: //customContextMenuRequested(QPoint)信号是QWidget中唯一右键菜单点击的信号,该信号发出的条件是:widget的ContextMenuPolicy必须是Qt::CustomContex
原创
发布博客 2016.08.03 ·
13162 阅读 ·
16 点赞 ·
2 评论 ·
55 收藏
加载更多