QT
文章平均质量分 52
鱼月半
乏善可陈
展开
-
移植动态库到新的系统环境下的一个小提醒
如果库文件是动态库,只复制粘贴是不行的,还需要将动态库放入共享库的缓存中。等一系列的动态库,复制到新的一台linux设备中,并放在。原创 2024-02-21 18:01:01 · 247 阅读 · 0 评论 -
使用结构体指针作为参数赋值传递时的注意点
在函数传参过程中,可能会遇到传递的参数为结构体的指针的情况。这个时候再给结构体赋值时,需要注意几点。将结构体指针的每一个键所对应的指针分别赋值。原创 2023-10-02 23:48:42 · 1063 阅读 · 0 评论 -
ubuntu中用mips32交叉编译Qt4.7.1时出现The tslib functionality test failed!的解决办法
因为tslib是用mips32交叉编译产生,因此在./configure时,也要将mips32的交叉编译器及相应的库文件写入环境变量。目录记得修改成自己的目录。原创 2023-03-10 11:42:39 · 183 阅读 · 0 评论 -
Qt中修改界面类的类名时需要注意的几个修改点
有些时候因为一些原因,需要修改Qt中创建的界面类,需要特别注意几个修改点。比如将test类修改为test2类以上部分为修改名称,还需要修改test2.h中的内容;原创 2023-02-21 22:20:57 · 3040 阅读 · 0 评论 -
Qt中项目A调用另一个项目B的方法汇总
在开发一个软件项目时候,当涉及到一个模块,已经有过类似的项目开发,为了避免重复开发,涉及到在该项目的工程中调用已开发的项目作为子项目,有很多种方法。原创 2023-02-15 11:06:49 · 4507 阅读 · 0 评论 -
Qt头文件include避免写很长的前缀路径的方法
在Qt中涉及到调用自己写的类时,如果调用的类比较多,而包含了被调用的头文件的文件夹被整体的移动时,就可能出现include的头文件的前缀路径需要被修改的情况,如果涉及到比较多的文件,这样修改起来就会很麻烦。如果数量一多,就会很麻烦,而且如果难免遗漏,正确的做法是,不修改include的内容,而在.pro文件夹下添加内容。因为移动了存放头文件的文件夹,移动到了工程文件夹下的TEXT文件夹下,正常情况下,需要修改成。如此,就会默认在include的文件夹下加上前缀路径。原创 2023-02-13 15:03:43 · 423 阅读 · 0 评论 -
使用showEvent()等QWidget消息事件时的注意点
类,作为独立的显示容器,就无所谓指定与否父容器,showEvent()都能使用。先解释一下什么是QWidget,以及继承自QWidge的QDialog类。:在没有指定父容器时可作为独立的窗口,指定父容器后可以作为容器的内部组件。此时该窗口类随着主界面一起显示,此时。中创建该实例时,如将该窗口类嵌入主界面类,如下。在窗口类中加载初始化内容时,通常有两个模式。时,创建实例时,不应指定父容器,如下。中的一个函数,在使用中有几个注意点。如果窗口类是继承自QWidget,如。类的父容器为主界面,此时。原创 2022-12-25 16:03:50 · 6678 阅读 · 1 评论 -
Qt中实例化一个函数变量时加不加括号的区别,以及括号中的this的使用
其实传递this,与传递别的参数没有区别,同个道理,就是在创建一个函数变量的实例时,其构造函数中的括号内有与this相同的参数类型,则可以传递this进到这个新创建的实例中去。即该函数类的构造函数需要有一个QWidget的参数,则此时就可以在new该函数变量时,添加(this),来传递this的界面类。至于括号中为空的解释,一般在一个类在构造函数中定义传递的参数时,都会设置一个初始的默认值,比如。,因此当有默认值时,括号中则可以为空,括号为空,则自定初始化为默认值,即nullptr。由此可以得出后续结论。原创 2022-12-23 23:50:47 · 2371 阅读 · 0 评论 -
QTcpSocket接收报文不完整的原因分析及解决方法
例如在很短的时间内收到即便发送方按照每一帧16帧的4096字节的报文时,总字节就会超过65535,此时最后一帧就会不完整,注意,最后一帧不一定是将65535填满后再剩下,最后一帧会在某个位置被斩断。在上面说到,其实没被写入缓存区的数据报文内容,并不会被丢弃,他会开始排队,因此,只要将缓存区的内容取出来,将缓存区的位置空出来,被截断的报文就会马上进入缓存区,并再一次触发。但是在TCP协议的网络缓存区中,仅仅能缓存65535字节的数据,当超过这个字节数,多余的报文就会进不到缓存区,当然也不会丢弃,而是开始排队。原创 2022-10-24 22:49:19 · 4763 阅读 · 0 评论 -
sql使用exec执行QString字符串时的注意点
在Qt中,为了动态生成sql语句并执行,惯用的做法是生成一个可编辑的QString字符串,然后利用arg()函数补全QString。这里需要特别注意的是包围在%1外面的单引号。如果不加这个单引号,可能会出现一切意料之外的问题。原创 2022-10-04 12:40:20 · 637 阅读 · 0 评论 -
在Qt中操作内存中的数据流时(如读写及拷贝操作)的注意点
在对数据流的操作时,务必使用能指定数据长度的函数。原创 2022-09-27 23:36:27 · 1082 阅读 · 1 评论 -
Qt中结构体占内存大小,大于实际大小的原因
Qt中结构体占内存大小,大于实际大小的原因原创 2022-09-24 14:20:49 · 955 阅读 · 0 评论 -
已知两条射线的方位俯仰角,求两线夹角的方法(C++实现)
已知两条射线的方位俯仰角,求两线夹角的方法(C++实现)。三角函数和点乘两种方法原创 2022-09-04 10:11:48 · 1324 阅读 · 0 评论 -
Qt中使用connect信号槽时的一个避免重复触发的注意点
避免信号槽重复触发原创 2022-09-02 17:33:52 · 1042 阅读 · 0 评论 -
error: undefined reference to `calculate()`报错
error: undefined reference to `calculate()`原创 2022-09-01 12:54:05 · 372 阅读 · 0 评论 -
“expression cannot be used as a function”报错
expression cannot be used as a function原创 2022-08-31 09:14:24 · 12273 阅读 · 0 评论 -
opencv编程报错“free():invalid next size(normal)”
clone改成copyTo原创 2022-08-28 11:47:57 · 1819 阅读 · 0 评论 -
Qt中正确引用外部头文件和库文件的方法和注意点
1. 环境变量中有的则直接调用。2. 环境变量没有的将路径写在**pro**文件夹中,然后调用。3. 注意**pro**文件的语法正确。原创 2022-06-15 22:17:47 · 9969 阅读 · 2 评论 -
#include使用“文件名“和<文件名>引入头文件的区别及简述
在#include引入头文件时,之前没注意,一直以为区别不大,直到前两天才发现,还是有比较明显的区别。注!在此没有系统性的概括异同点,只谈笔者在使用中遇到的一些情况。原创 2022-06-12 10:57:44 · 892 阅读 · 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 · 441 阅读 · 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 · 493 阅读 · 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 · 1344 阅读 · 0 评论 -
一种实现简单网络断点续传的方法介绍
实现简单网络断点传输的思路和方法原创 2022-05-02 12:25:46 · 1621 阅读 · 2 评论 -
Qt中LNK1181:无法打开输入文件“*.obj“报错
最近在做CUDA在Qt中的混合编程,于是需要修改pro文件,添加一个额外编译器NVCC,来实现。修改完pro文件,qmake,然后Debug,一切好像理所应当的样子,然后报错LNK1181:无法打开输入文件"debug\test.obj"啪的一下,快乐没了。没有办法,查问题,花了一两天的时间,才查清楚。一、排查首先看这一段pro文件中的配置项: # Debug 模式 OBJECTS_DIR = debug/obj CUDA_OBJECTS_DIR = debug原创 2022-03-28 16:00:12 · 10139 阅读 · 1 评论 -
Windows下qtCreator+MSVC2017编译器+CUDA混合编程的三种方法
qtCreator+MSVC2017编译器+CUDA混合编程的三种方法一、准备好工程文件(一)Qt中创建一个工程:(二)cuda程序内容(三)cuda程序的头文件内容(四)主程序入口内容二、混合编程的三种方法(一)使用NVCC编译器预编译生成*.obj后在Qt工程文档中调用(二)在pro文件中添加额外编译器nvcc和主程序同时编译(三)将cu文件封装为库文件,而后在工程文件中引用三、总结尝试在Qt中实现CUDA的混合编程,因为CUDA不支持MinGW编译器,因此只能使用VS编译器,于是选用MSVC2017原创 2022-03-27 12:14:04 · 6876 阅读 · 1 评论 -
Qt中从MinGW编译器改到VS2017编译器的几个注意点
具体的操作就不说了,网上有很多,这里主要讲注意点:一、引用的库文件要改变首先最基本的一点,既然从MinGW改到了VS编译器,那相应的调用的库也需要改变,同样一个库文件,比如a.lib文件,用MinGW还是VS编译产生的a.lib,是不通用的,即在MinGW编译器编译的a.lib和在VS编译的a.lib是不通用的,如果你改到了VS编译器,就要用VS编译产生的a.lib库文件。二、工程文档的编码方式需要改变这个也是踩了很多坑才晓得的,为什么命名一段代码在MinGW下跑起来没有任何问题,而到了VS编译器下原创 2022-03-26 16:14:46 · 1938 阅读 · 1 评论 -
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 · 1357 阅读 · 0 评论 -
osg导入模型时,模型全黑的原因及解决方法分析
在导入飞机模型时,发现模型是黑咕隆咚一片,然后翻阅资料,找到三个可能性。(一)几何模型没有法线导致(二)模型放大缩小(三)没有给模型添加光源原创 2022-02-27 17:03:12 · 2505 阅读 · 2 评论 -
利用osgQOpenGLWidget将osgEarth嵌入Qt窗口界面时键盘无响应
在利用osgQOpenGLWidget将osg嵌入到Qt界面进行显示时,出现一个奇怪的现象。在窗口内,鼠标正常,但是键盘无响应。打印输出看了一下。确定是就没有响应。 if(ea.getEventType()!=ea.FRAME) qDebug()<<ea.getEventType();(一)原因分析后来发现,是因为osgQOpenGLWidget的窗口插件默认状态下,他的Focus策略是noFocus,所以键盘不会将焦点集中到这个插件里,因此对键盘原创 2022-02-25 13:08:34 · 1958 阅读 · 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 · 1171 阅读 · 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 · 1974 阅读 · 2 评论 -
Qt中undefined reference to报错的三种可能性和解决方法(以libgdal为例)
有一段代码很久没动了,今天想跑起来编译看看,突然发现出现一堆报错,如下:好吧,首先我能保证的是,有之前调试代码过程中,这些报错一定是没有出现的。最近也没什么动作,怎么就忽然就出现了。不管怎么说,解决问题是关键。单纯这个报错内容来看,很典型的undefined reference to的报错,这个报错在调用第三方库的编程中,简直是家常便饭,代表的含义也很明确,就是找不到函数的定义。用C++写代码的都知道,在C++中,代码是分为声明和定义的,声明就是告诉编译器有这个函数,换言之,就是个名字,而定义,就原创 2022-02-23 17:20:42 · 53156 阅读 · 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 · 888 阅读 · 0 评论 -
QTextEdit控件无法复制其中的内容的原因和解决方法
将focusPolicy设置为别的策略即可,即只要不是NoFocus,都行,比如StrongFocus。由此推断,之前无法复制,应该是因为QTextEdit默认为NoFocus,无法集中焦点导致的。策略作用Qt::NoFocus不接受焦点TabFocus通过Tab键接受焦点ClickFocus通过单击接受焦点StrongFocus通过Tab键和单击接受焦点WheelFocus通过使用鼠标滚轮来接受焦点...原创 2021-12-27 13:15:26 · 1333 阅读 · 0 评论 -
利用QSqlTableModel及QTableView实现数据库增删改及自定义sql操作
利用QSqlTableModel及QTableView实现数据库增删改及自定义sql操作原创 2021-12-26 17:43:37 · 6624 阅读 · 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 · 1728 阅读 · 0 评论 -
osgEarth2.10.2添加label标签不显示的一个可能原因及正确添加方法
最近在尝试给小地球添加一些标签,比如指示城市名,但是一直添加失败。1 不显示的原因后来发现,原来不是我添加失败,而是在添加标签的时候,如果不指定填充色和轮廓颜色,默认是白色,好巧不巧的,我添加标签的位置是白色背景,所以一直看不到,所以其实标签添加成功了,只是因为颜色的缘故,看不见罢了。2正确添加标签的方法在osgEarth2.10.2中正确添加标签的方法如下: osg::ref_ptr<osg::Group> mRoot = new osg::Group(); //智能指针方式原创 2021-12-18 22:55:18 · 2007 阅读 · 0 评论 -
C++中*p,&q,m以及**r,*&n,a[],*b[]的通俗易懂解释
一文读懂系列,用最浅显易懂的方式,通俗解释,C++中*p,&q,m以及**r,*&n,a[],*b[]原创 2021-12-12 11:26:16 · 4123 阅读 · 0 评论 -
在使用osgdem时报错,“error:Now checking for plug-in osgPlugins-3.6.4/osgdb_nvtt.so“
错误是一眼就能看懂的,就是缺少一个osgdb_nvtt.so的库,回去查osg3.6.4的CMakeList.txt,发现在nvtt一栏,是NOFOUDND。解决起来也简单,如果是联网的ubuntu,只需要一句命令sudo apt-get install libnvtt-dev然后重新编译osg3.6.4就行。另外提一句,nvtt就是nvidia-texture-tools。于是顺便把NVIDIA的驱动和CUDA也安装上了。......原创 2021-12-05 23:46:22 · 528 阅读 · 0 评论 -
QDialog添加最大化最小化按钮
设置窗体最大化和最小化原创 2021-11-30 22:37:47 · 2460 阅读 · 1 评论