![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
鱼月半
乏善可陈
展开
-
使用结构体指针作为参数赋值传递时的注意点
在函数传参过程中,可能会遇到传递的参数为结构体的指针的情况。这个时候再给结构体赋值时,需要注意几点。将结构体指针的每一个键所对应的指针分别赋值。原创 2023-10-02 23:48:42 · 1007 阅读 · 0 评论 -
ubuntu22.04下编译gcc-4.7.4
在ubuntu22.04下进行开发,需要用到gcc-4.7,因为这是个很老的编译器了,所以已经无法直接apt install安装了,包括网上常见的将ppa添加后在apt也不行,因此只能自己一个个下载deb包,解决依赖安装了。废话不多说,直接上库文件列表。原创 2023-03-16 11:03:10 · 891 阅读 · 3 评论 -
Qt中项目A调用另一个项目B的方法汇总
在开发一个软件项目时候,当涉及到一个模块,已经有过类似的项目开发,为了避免重复开发,涉及到在该项目的工程中调用已开发的项目作为子项目,有很多种方法。原创 2023-02-15 11:06:49 · 4195 阅读 · 0 评论 -
Qt头文件include避免写很长的前缀路径的方法
在Qt中涉及到调用自己写的类时,如果调用的类比较多,而包含了被调用的头文件的文件夹被整体的移动时,就可能出现include的头文件的前缀路径需要被修改的情况,如果涉及到比较多的文件,这样修改起来就会很麻烦。如果数量一多,就会很麻烦,而且如果难免遗漏,正确的做法是,不修改include的内容,而在.pro文件夹下添加内容。因为移动了存放头文件的文件夹,移动到了工程文件夹下的TEXT文件夹下,正常情况下,需要修改成。如此,就会默认在include的文件夹下加上前缀路径。原创 2023-02-13 15:03:43 · 385 阅读 · 0 评论 -
使用showEvent()等QWidget消息事件时的注意点
类,作为独立的显示容器,就无所谓指定与否父容器,showEvent()都能使用。先解释一下什么是QWidget,以及继承自QWidge的QDialog类。:在没有指定父容器时可作为独立的窗口,指定父容器后可以作为容器的内部组件。此时该窗口类随着主界面一起显示,此时。中创建该实例时,如将该窗口类嵌入主界面类,如下。在窗口类中加载初始化内容时,通常有两个模式。时,创建实例时,不应指定父容器,如下。中的一个函数,在使用中有几个注意点。如果窗口类是继承自QWidget,如。类的父容器为主界面,此时。原创 2022-12-25 16:03:50 · 6171 阅读 · 1 评论 -
Qt中实例化一个函数变量时加不加括号的区别,以及括号中的this的使用
其实传递this,与传递别的参数没有区别,同个道理,就是在创建一个函数变量的实例时,其构造函数中的括号内有与this相同的参数类型,则可以传递this进到这个新创建的实例中去。即该函数类的构造函数需要有一个QWidget的参数,则此时就可以在new该函数变量时,添加(this),来传递this的界面类。至于括号中为空的解释,一般在一个类在构造函数中定义传递的参数时,都会设置一个初始的默认值,比如。,因此当有默认值时,括号中则可以为空,括号为空,则自定初始化为默认值,即nullptr。由此可以得出后续结论。原创 2022-12-23 23:50:47 · 2278 阅读 · 0 评论 -
QTcpSocket接收报文不完整的原因分析及解决方法
例如在很短的时间内收到即便发送方按照每一帧16帧的4096字节的报文时,总字节就会超过65535,此时最后一帧就会不完整,注意,最后一帧不一定是将65535填满后再剩下,最后一帧会在某个位置被斩断。在上面说到,其实没被写入缓存区的数据报文内容,并不会被丢弃,他会开始排队,因此,只要将缓存区的内容取出来,将缓存区的位置空出来,被截断的报文就会马上进入缓存区,并再一次触发。但是在TCP协议的网络缓存区中,仅仅能缓存65535字节的数据,当超过这个字节数,多余的报文就会进不到缓存区,当然也不会丢弃,而是开始排队。原创 2022-10-24 22:49:19 · 4565 阅读 · 0 评论 -
sql使用exec执行QString字符串时的注意点
在Qt中,为了动态生成sql语句并执行,惯用的做法是生成一个可编辑的QString字符串,然后利用arg()函数补全QString。这里需要特别注意的是包围在%1外面的单引号。如果不加这个单引号,可能会出现一切意料之外的问题。原创 2022-10-04 12:40:20 · 575 阅读 · 0 评论 -
Qt中结构体占内存大小,大于实际大小的原因
Qt中结构体占内存大小,大于实际大小的原因原创 2022-09-24 14:20:49 · 915 阅读 · 0 评论 -
已知两条射线的方位俯仰角,求两线夹角的方法(C++实现)
已知两条射线的方位俯仰角,求两线夹角的方法(C++实现)。三角函数和点乘两种方法原创 2022-09-04 10:11:48 · 1285 阅读 · 0 评论 -
Qt中使用connect信号槽时的一个避免重复触发的注意点
避免信号槽重复触发原创 2022-09-02 17:33:52 · 976 阅读 · 0 评论 -
error: undefined reference to `calculate()`报错
error: undefined reference to `calculate()`原创 2022-09-01 12:54:05 · 358 阅读 · 0 评论 -
“expression cannot be used as a function”报错
expression cannot be used as a function原创 2022-08-31 09:14:24 · 11687 阅读 · 0 评论 -
opencv编程报错“free():invalid next size(normal)”
clone改成copyTo原创 2022-08-28 11:47:57 · 1739 阅读 · 0 评论 -
#include使用“文件名“和<文件名>引入头文件的区别及简述
在#include引入头文件时,之前没注意,一直以为区别不大,直到前两天才发现,还是有比较明显的区别。注!在此没有系统性的概括异同点,只谈笔者在使用中遇到的一些情况。原创 2022-06-12 10:57:44 · 859 阅读 · 0 评论 -
memcpy和memset使用时需要区分的注意点
一、问题在使用memset赋值时,如下memset(arr1.data(),0x7FFF,2);发现arr1的值始终为0xFFFF,二、实验代码:#include "mainwindow.h"#include "ui_mainwindow.h"#include <QDebug>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){原创 2022-05-30 14:18:44 · 399 阅读 · 0 评论 -
在Qt的公式计算中输入常量数值时的注意点
一、问题最近在计算一个函数时,发现输出结果不对。函数如下:int s1=qAtan(5/i)*1000;输出结果为0。二、实验代码1:#include <QDebug>#include <QtMath>#include <typeinfo> int i=10; double d=10; int s1=qAtan(5/i)*1000; int s2=qAtan(5.0/i)*1000; int s3=qAtan(原创 2022-05-30 09:20:49 · 471 阅读 · 0 评论 -
在Qt运算中,不同数据类型运算及强制转换的注意点
一、问题描述今天在计算一个值时,int i1 = (int)x*y/360,发现结果i1的值明显不对。二、测试代码1: float x=130; int y=16777215; int i1 = (int)x*y/360;//将x转为int型,然后与y相乘,也是int型,所以溢出 int i1_2 = (int)y*x/360;//x仍旧为float,相乘结果为float,所以未溢出 int i2 = (int)(x*y/360);//计算结果才会强制转int原创 2022-05-25 23:01:53 · 1271 阅读 · 0 评论 -
一种实现简单网络断点续传的方法介绍
实现简单网络断点传输的思路和方法原创 2022-05-02 12:25:46 · 1381 阅读 · 2 评论 -
osgEarth2.10中用setNode替代setTetherNode设置视点跟踪
在以前的版本中,可以很简单的使用setTetherNode进行视点跟踪设置。以前的方法: osg::ref_ptr<osg::Group> mRoot = new osg::Group(); //设置根节点 osgViewer::Viewer * pViewer = new osgViewer::Viewer(); osg::MatrixTransform* mtFly = new osg::MatrixTransform;//创建一个模型 mRoot->addChild(mtF原创 2022-03-15 12:53:57 · 1305 阅读 · 0 评论 -
osg导入模型时,模型全黑的原因及解决方法分析
在导入飞机模型时,发现模型是黑咕隆咚一片,然后翻阅资料,找到三个可能性。(一)几何模型没有法线导致(二)模型放大缩小(三)没有给模型添加光源原创 2022-02-27 17:03:12 · 2361 阅读 · 2 评论 -
利用osgQOpenGLWidget将osgEarth嵌入Qt窗口界面时键盘无响应
在利用osgQOpenGLWidget将osg嵌入到Qt界面进行显示时,出现一个奇怪的现象。在窗口内,鼠标正常,但是键盘无响应。打印输出看了一下。确定是就没有响应。 if(ea.getEventType()!=ea.FRAME) qDebug()<<ea.getEventType();(一)原因分析后来发现,是因为osgQOpenGLWidget的窗口插件默认状态下,他的Focus策略是noFocus,所以键盘不会将焦点集中到这个插件里,因此对键盘原创 2022-02-25 13:08:34 · 1925 阅读 · 4 评论 -
利用osgText解决osgEarth控件中文显示问题
环境:操作系统:x86,ubuntu20.04。osgEarth 2.10。osg3.6.4.以LabelControl控件为例:划重点:利用osgText解决中文显示问题具体的做法:(一)pro文件添加osgText的引入。注意,引用目录根据自己的实际情况填写。unix:!macx: LIBS += -L$$PWD/../../osg/osg_osgearth_install/osg/lib/ -losgText(二)生成控件并显示中文#include <osgEarth原创 2022-02-25 10:26:03 · 1090 阅读 · 0 评论 -
简述OSG中osgQt和osgQOpenGL的关联和区别
如果想利用Qt平台进行OSG相关的开发,大概是绕不过去osgQt这个库的。每天都会有人问,osgQt相关的问题。在这里把我大概了解的部分内容,简单说明一下。以往通常说的osgQt,指的是在OSG的3.4版本以前使用的,在Qt中用来加载OSG相关功能模块并嵌入到QWidget中显示的一个库。在3.6以后的新版本中已经被淘汰了,在OSG的3.6版本以后,使用的类似功能的库,叫做osgQOpenGL。而osgQt和osgQOpenGL的区别,不是我要说的重点,可以自行百度了解。下面这个表格更清晰直观。原创 2022-02-23 17:49:54 · 1897 阅读 · 2 评论 -
Qt中undefined reference to报错的三种可能性和解决方法(以libgdal为例)
有一段代码很久没动了,今天想跑起来编译看看,突然发现出现一堆报错,如下:好吧,首先我能保证的是,有之前调试代码过程中,这些报错一定是没有出现的。最近也没什么动作,怎么就忽然就出现了。不管怎么说,解决问题是关键。单纯这个报错内容来看,很典型的undefined reference to的报错,这个报错在调用第三方库的编程中,简直是家常便饭,代表的含义也很明确,就是找不到函数的定义。用C++写代码的都知道,在C++中,代码是分为声明和定义的,声明就是告诉编译器有这个函数,换言之,就是个名字,而定义,就原创 2022-02-23 17:20:42 · 50734 阅读 · 3 评论 -
修改UDT代码同时支持linux及windows下编译
修改UDT代码同时支持linux及windows下编译一、注意点二、修改内容一、注意点要灵活运用宏定义,来区分linux及windows下的不同内容。尤其要注意,#ifdef和#ifndef的区别,#ifdef是if define的缩写,而#ifndef是if not define的缩写。举例说明。#ifdef WIN32 //指的是当可以运行windows架构时#ifndef WIN32 //指的是当不可以运行windows架构时在linux和windows中关于网络编程所调用原创 2022-02-09 22:07:33 · 821 阅读 · 0 评论 -
QTextEdit控件无法复制其中的内容的原因和解决方法
将focusPolicy设置为别的策略即可,即只要不是NoFocus,都行,比如StrongFocus。由此推断,之前无法复制,应该是因为QTextEdit默认为NoFocus,无法集中焦点导致的。策略作用Qt::NoFocus不接受焦点TabFocus通过Tab键接受焦点ClickFocus通过单击接受焦点StrongFocus通过Tab键和单击接受焦点WheelFocus通过使用鼠标滚轮来接受焦点...原创 2021-12-27 13:15:26 · 1238 阅读 · 0 评论 -
利用QSqlTableModel及QTableView实现数据库增删改及自定义sql操作
利用QSqlTableModel及QTableView实现数据库增删改及自定义sql操作原创 2021-12-26 17:43:37 · 6256 阅读 · 3 评论 -
osgEarth的PlaceNode函数不显示中文或显示中文乱码的解决方法
解决方法很简单,就是添加一个风格函数,尤其是,注意设置字体和编码方式 osgEarth::Style style; osgEarth::Symbology::TextSymbol * textStyle = style.getOrCreateSymbol<osgEarth::Symbology::TextSymbol>(); textStyle->fill()=osgEarth::Symbology::Color(osg::Vec4f(1.0,0.0,0.0,0.5原创 2021-12-19 22:52:47 · 1670 阅读 · 0 评论 -
C++中*p,&q,m以及**r,*&n,a[],*b[]的通俗易懂解释
一文读懂系列,用最浅显易懂的方式,通俗解释,C++中*p,&q,m以及**r,*&n,a[],*b[]原创 2021-12-12 11:26:16 · 3731 阅读 · 0 评论