
C++
ChenJunAn97
这个作者很懒,什么都没留下…
展开
-
Qt 槽函数执行问题
本人在编写一个qt程序的时候,在一个线程内connect了一个自定义的信号与自定义的槽函数,想着在调用槽函数加上判断,如果判断不成功则延时,结果程序卡死。经过定位发现,是connect的时候,槽函数运行顺序的问题Qt的信号与槽机制是基于回调函数的基础上的但是在多线程编程下,槽函数并不相当于中断机制,可以参考如下的信息connect其实是存在第五个参数的这里参考的是这篇文章https://blog.youkuaiyun.com/life_is_too_hard/article/details/5208972原创 2022-02-19 01:55:25 · 3964 阅读 · 0 评论 -
static 定义成员函数报“Cannot declare member function ...to have static linkage“错误
问题分析:出现这种情况通常.h文件中声明类的成员函数用static修饰。此时static的作用是让一个类只有一个static成员函数实例化。在.cpp文件中实现函数的时候,也加了static修饰符,此时static修饰符的作用是当前函数只能作用在当前的cpp文件。解决方法:删除.cpp文件的static修饰符。或者在.h文件中实现。...原创 2021-12-02 20:35:54 · 1493 阅读 · 0 评论 -
ffmpeg使用avformat_open_input的时候报错method SETUP failed:461 Client error
method SETUP failed:461 Client error解决方法:提示这个RTSP流不支持TCP transport,修改程序参数设置transport为UDP试试。原创 2021-09-29 11:29:18 · 3356 阅读 · 2 评论 -
图最短路径算法
Dijkstra算法基于BFS的基础上加入优先队列,保证下一次遍历的位置为步数最小的,就能保证每次更新的当前节点为最短的距离。图片来源:https://blog.youkuaiyun.com/qq_35644234/article/details/60870719算法实现:维护一个数组为从V1到V6的最短距离,维护一个优先队列(从小到大)。第一次遍历:1.从V1开始,遍历它的出度,发现直连的只有V3和V5。把V1和V3之间的这条边压入优先队列,把V1和V5这条边、V1和V6这条边也压入优先队列。当前优先原创 2021-09-05 22:58:19 · 182 阅读 · 0 评论 -
手写atoi
实现一下atoi函数/*库函数: atoi功能:把输入的char数组转成int型,如果输入类型不规范则为0*/int ATOI (const char *sor){ int length = strlen(sor); int l = 0, r; char Flag = 1; while(l < length && sor[l] == ' ' || sor[l] == '\t'){//跳过前置空格或者制表符 l++; }原创 2021-09-02 22:31:44 · 344 阅读 · 0 评论 -
Qt 使用MYSQL错误号1251解决方法
这种情况通常都是出现在编译旧版的MYSQL项目中,自身版本太新,旧版的mysql不支持,所以需要去下载对应的库放到qt的目录中https://downloads.mysql.com/archives/c-c/在压缩包里面找到这两个库放到这个目录或者放到你qt的工程目录也行就解决了这个问题了。至于1049 =》 对应的是没有对应的database,创建一个就好了...原创 2021-09-01 16:01:15 · 205 阅读 · 0 评论 -
C++判断大小端
更新一下,这个写法更直观int main(int argc, char * argv[]){ int x = 0x12345678; int c = x & 0x000000ff; if (c == 0x78) { cout << "小端" << endl; } else { cout << "大端" << endl; } return 0;}原创 2021-08-30 23:49:45 · 222 阅读 · 0 评论 -
手写一下智能指针
#pragma oncetemplateclass UniquePtr {public:private:T *_data;};templateclass SharedPtr {public:explicit SharedPtr():_count(nullptr), _data(nullptr){}explicit SharedPtr(const SharedPtr &sor) {if (this != &sor) {_count = sor._count;_dat原创 2021-08-28 18:22:53 · 364 阅读 · 0 评论 -
对于Qt程序在Windows系统下不同放大倍数导致文本显示不全的问题
往往是因为程序员本身的拉伸程度和使用者使用的环境不一样,两人的拉伸程度不一样导致显示的界面效果不同。解决方法:给文本设置样式的时候不要在UI文件上修改,通过setstylesheet修改,这样设置的文字样式是在不同拉伸程度下显示的是一样的字体大小和样式在这改↓:可以这样写,是设置字体大小为20px,微软雅黑字体。...原创 2021-08-18 17:56:20 · 2120 阅读 · 1 评论 -
Qt阴影边框!!!!!!!!!!!!!!!
先上图最终效果在CSS3中有box-shadow实现,但是qss是基于css2的,不能通过这个字段来实现,需要用到类QGraphicsDropShadowEffect首先需要让一个widget作为背景控件来填充背景,避免设置透明后让子控件都有阴影了代码如下 //设置窗体透明 this->setAttribute(Qt::WA_TranslucentBackground, true); //设置无边框 this->setWindowFlags(Qt::Wi原创 2021-08-18 16:27:44 · 2452 阅读 · 0 评论 -
Qt GBK编码与UTF-8编码格式转换
用QString的时候往往会出现默认转化的问题。也就是得到的数据已经是变成了UTF8编码,但是它的内容是GBK编码的问题。也就是说如果GBK编码得到的数据是 0x11 0x22放入QString的时候会变成 \u0011 和 \u0022这时候已经是UTF8编码了。为了解决这个问题,就引入QByteArray,QBytearray不会默认的帮你转换编码该是多少就是多少下面是我写的GBK编码和UTF-8编码互相转换的函数。返回值是QString,可以看着来改inline QString GBK2UT原创 2021-08-10 19:55:49 · 7012 阅读 · 0 评论 -
Qt关于子线程调用Qtcpsocket发送内容不会中断的问题
Qt中,如果在主线程定义了一个Qtcpsocket,然后用子线程调用这个socket来发送数据,你会发现,发送的数据不中断,并且只有当连接关闭的时候才会中断发送,接收端才可以接收到数据。解决方法:哪个线程定义的Qtcpsocket,就哪个线程调用这个QTcpSocket,主线程定义的话就让主线程调用就好了。让连接断开也是一种方法。...原创 2021-08-09 19:53:12 · 794 阅读 · 0 评论 -
关于C++函数优化的方法
1.对于重复调用的函数,用变量储存比如 经常用到一个vector的size,用一个int型变量 保存,会好很多,减少函数调用的开销2.对于容器的取值,用迭代器会快很多比如对一个vector迭代for(int i = 0; i < vec.size(); ++i)cout<<vec[i]<<endl;用迭代器会快很多,例for(auto ite = vec.begin(); ite!= vec.end(); ite++)cout<<*ite<&l原创 2021-08-07 00:44:59 · 480 阅读 · 0 评论 -
关于Qt自定义标题栏
Qt想要个性化设计离不开标题栏。像是网易云音乐,各种浏览器这种就是需要自定义标题栏。最近项目用到了自定义标题栏自定义标题栏分为几个步骤:1.隐藏QT自身的标题栏2.用一个QWidget充当标题栏,在QWidget里面放置你想要的功能控件3.在QWidget的基础上加入最基本的控件:最大化按钮,最小化按钮,退出按钮。并完成对应的信号与槽4.最最重要的就是重写鼠标信号,在QWidget处设置事件过滤器,重写事件函数,根据事件类型实现自己的功能:较为基础的:双击最大化,双击最小化,窗口跟随移动,原创 2021-08-07 00:30:27 · 1025 阅读 · 0 评论 -
C++类的内存分布
原创 2021-07-19 00:31:30 · 146 阅读 · 0 评论