C++/Qt 小知识记录6

工作中遇到的一些小问题,总结的小知识记录:C++/Qt

小知识6

  • dumpbin工具查看库导出符号
  • OSGEarth使用编出的protobuf库,报错问题解决
  • VS2022使用cpl模板后,提示会乱码的修改设置
  • QProcess调用cmd.exe执行脚本
  • QPainterPath对线段描边处理
  • QTableWidget实现行颜色交替的样式

dumpbin工具查看库导出符号

查看库中的符号,使用 /symbols 选项;如果想要查看导出的符号,可以使用 /exports 选项。

dumpbin /exports libprotobuf.lib
输出到文本
dumpbin /exports libprotobuf.lib > exports.txt

OSGEarth使用编出的protobuf库,报错问题解决

最近使用vs2022编译OSG3.6.5 + OSGEarth3.3,在编译时报错如下链接错误,将protobuf的很多个版本都尝试了也没有,以及大部分的解决方案说将编译改为动态库也不行:

	1>vector_tile.pb.obj : error LNK2019: 无法解析的外部符号 "class google::protobuf::internal::ExplicitlyConstructed<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > google::protobuf::internal::fixed_address_empty_string" (?fixed_address_empty_string@internal@protobuf@google@@3V?$ExplicitlyConstructed@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@123@A),函数 "public: virtual class mapnik::vector::tile_value * __cdecl mapnik::vector::tile_value::New(void)const " (?New@tile_value@vector@mapnik@@UEBAPEAV123@XZ) 中引用了该符号1>glyphs.pb.obj : error LNK2001: 无法解析的外部符号 "class google::protobuf::internal::ExplicitlyConstructed<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > google::protobuf::internal::fixed_address_empty_string" (?fixed_address_empty_string@internal@protobuf@google@@3V?$ExplicitlyConstructed@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@123@A)1>vector_tile.pb.obj : error LNK2019: 无法解析的外部符号 "struct std::atomic<bool> google::protobuf::internal::init_protobuf_defaults_state" (?init_protobuf_defaults_state@internal@protobuf@google@@3U?$atomic@_N@std@@A),函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __cdecl google::protobuf::internal::GetEmptyString(void)" (?GetEmptyString@internal@protobuf@google@@YAAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 中引用了该符号1>glyphs.pb.obj : error LNK2001: 无法解析的外部符号 "struct std::atomic<bool> google::protobuf::internal::init_protobuf_defaults_state" (?init_protobuf_defaults_state@internal@protobuf@google@@3U?$atomic@_N@std@@A)1>D:\Developer\OsgEarth3.3\build_vs2022\lib\Release\osgEarth.dll : fatal error LNK1120: 2 个无法解析的外部命令1>已完成生成项目“osgEarth.vcxproj”的操作 - 失败。========== 生成: 0 成功,1 失败,1 最新,0 已跳过 ==================== 生成 于 20:44 完成,耗时 09.620 秒 ==========

解决方法:
在osgEarth的CMakeLists.txt中入PROTOBUF_USE_DLLS宏:
ADD_DEFINITIONS(-DPROTOBUF_USE_DLLS)
即,让OsgEarth使用protobuf的动态库(所以protobuf至少也要编成动态库的形式)
参考链接:
https://blog.csdn.net/alvinlyb/article/details/110952210
c++编译protobuf时提示LNK2001 无法解析的外部符号_vc++编译protobuf无法解析的外部符号-CSDN博客

VS2022使用cpl模板后,提示会乱码的修改设置

VS2022使用cpl模板后,提示注释会乱码的修改
在这里插入图片描述
修改方法:选项->环境->区域设置内切换语言:
在这里插入图片描述

QProcess调用cmd.exe执行脚本

主要是当时忘了Windows下的cmd命令也是一个工具,就想着直接调用自己的执行命令去了,特此记录一下。
在这里插入图片描述

QPainterPath对线段描边处理

即:对一条粗线段进行描边,但在线段的交点容易产生缠绕的线,如图所示:
在这里插入图片描述
解决过程中发现:QPainterPathStroker的setWidth(n)和painter->strokePath(outlinePath, pen)传入的pen,设置pen.setWidth值一致,可以避免,入图所示:
但边线太粗,无法满足要求。
在这里插入图片描述
使用QPainterPath提供的simplified()函数处理转弯处的计算冗余问题,同时支持painter->strokePath(outlinePath, pen)传入的pen,线宽可以根据要求改变。
部分实现如下:

painter->setRenderHint(QPainter::Antialiasing, true);// 生成可填充的轮廓
QPainterPathStroker stroker;
stroker.setCapStyle(Qt::RoundCap);
stroker.setJoinStyle(Qt::RoundJoin);
stroker.setDashPattern(Qt::SolidLine);
stroker.setWidth(m_attr.m_nLineWidth);// 可填充区域,表示原始路径 path 的轮廓
QPainterPath path;
path.moveTo(m_attr.m_polygon[0]);
for (int i = 1; i < m_attr.m_polygon.size(); i++)
{path.lineTo(m_attr.m_polygon[i]);
}
QPainterPath outlinePath = stroker.createStroke(path);
outlinePath = outlinePath.simplified();// 轮廓外边框绘制
QPen pen(m_attr.m_lineColor);
pen.setWidth(2);
painter->strokePath(outlinePath, pen);// 填充路径 outlinePath
painter->setPen(Qt::NoPen);
QColor fillColor = m_attr.m_fillColor;
fillColor.setAlpha(120);
painter->fillPath(outlinePath, QBrush(fillColor));

QTableWidget实现行颜色交替的样式

在这里插入图片描述
以下为与之相关的qss和代码的实现:

/*设置QAbstractItemView隔行换色*/
QAbstractItemView[alternatingRowColors = "true"]{qproperty-alternatingRowColors:true;
}QTableWidget {background-color: #66333333; /*背景色*/alternate-background-color: #07314f; /*交替色*/border: none; font-size: 12px;color: #ffffff; gridline-color: #77c4ff; /* 设置网格线的颜色 */
}
ui->tableWidget->setAlternatingRowColors(true); //设置支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/836578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英文文本标点恢复

文章目录 一、安装 rpunct二、使用三、下载模型时报错1、报错详情2、报错原因3、解决方案 四、程序运行时报错1、报错详情2、报错原因3、解决方案 五、修改默认缓存路径 一、安装 rpunct pip install rpunct 相关依赖包信息&#xff1a; langdetect1.0.9 pandas1.2.4 simpletr…

Java入门最小必要知识:变量及其本质

编程语言是与计算机交流的桥梁&#xff0c;而在编程世界中&#xff0c;变量是这座桥上不可或缺的砖石。 从本质上&#xff0c;可以把复杂的编程工作简化为两件事&#xff1a; ①定义变量②操作变量 可见&#xff0c;变量之于编程的重要性。 对于Java开发者&#xff0c;理解…

阿里云 物联网平台 MQTT连接、数据传输

阿里云 物联网平台 MQTT连接、数据传输 1、设备连接阿里云 2、多设备之前的通信、数据流转 3、设备数据来源的读取。 基于C# winform 开发上位机&#xff0c;读取设备、仪器、MES或者电子元器件的数据&#xff0c;MQTT传输至阿里云平台&#xff0c;可视化界面构建界面&#…

华为OD介绍

概念 华为OD是华为提出的一种新的用工方式&#xff0c;其全称是Outsourcing Dispacth&#xff0c;也可以简写为ODP&#xff0c;是华为和北京外企德科人力资源服务上海有限公司联合招聘的简称。华为OD岗位属于华为外包员工的一种&#xff0c;仅限于软件研发类岗位&#xff0c;类…

1065: 无向图的连通分量计算

解法&#xff1a; dfs求连通性 1.设节点表vis[] 2.遍历节点表dfs标记&#xff0c;每次得到一个连通分量 #include<iostream> #include<vector> using namespace std; int arr[100][100]; void dfs(vector<bool>& vis, int v) {//不用终止条件&#x…

StringRedisTemplate使用

文章目录 一&#xff0c;StringRedisTemplate介绍二&#xff0c;StringRedisTemplate使用1.字符串&#xff08;String&#xff09;&#xff1a;2.哈希&#xff08;Hash&#xff09;&#xff1a;3.列表&#xff08;List&#xff09;&#xff1a;4.集合&#xff08;Set&#xff0…

省级生活垃圾无害化处理率面板数据(2004-2022年)

01、数据简介 生活垃圾无害化处理率是指经过处理的生活垃圾中&#xff0c;达到无害化标准的垃圾所占的比例。这一指标是衡量城市垃圾处理水平的重要标准&#xff0c;反映了城市对垃圾进行有效管理和处理的能力。 生活垃圾无害化处理的主要方式包括生活垃圾焚烧、生活垃圾卫生…

金三银四面试题(二十八):观察者模式知多少?

什么是观察者模式 观察者模式&#xff08;Observer Pattern&#xff09; 是一种设计模式&#xff0c;它定义了一种一对多的关系&#xff0c;让多个观察者对象能够同时监听一个主题对象。当主题对象的状态发生变化时&#xff0c;会通知所有观察者对象&#xff0c;使它们能够作出…

Sass:强大而灵活的CSS预处理器详解

Sass&#xff1a;强大而灵活的CSS预处理器详解 在前端开发的世界里&#xff0c;CSS&#xff08;层叠样式表&#xff09;作为样式描述语言&#xff0c;为我们提供了丰富的样式定义和布局方式。然而&#xff0c;随着项目规模的不断扩大和复杂度的提升&#xff0c;原生CSS的编写和…

C++:完美转发(二)(std::forward)

一、RVO优化和std::move、std::forward 以下是一个综合性的例子&#xff1a; #include <iostream> #include <memory> #include <ostream> using namespace std;// 1. 针对右值引用实施std::move&#xff0c;针对万能引用实施std::forward class Data {};c…

react之Reducer和Context的联合使用

第三章 - 状态管理 使用 Reducer 和 Context 拓展你的应用 Reducer 可以整合组件的状态更新逻辑。Context 可以将信息深入传递给其他组件。你可以组合使用它们来共同管理一个复杂页面的状态。 结合使用 reducer 和 context 在 reducer 介绍 的例子里面&#xff0c;状态被 r…

如何修复Windows中的“无Internet,安全”错误?这里有详细步骤

序言 在Windows计算机上连接到互联网非常容易,但是,当你尝试连接到网络时,Windows有时可能会显示消息“无Internet,安全”。此消息的确切含义是什么?如何修复?以下是你需要了解的所有信息。 为什么Windows显示“无Internet,安全”消息 “无Internet,安全”消息是一个…

简约在线生成短网址系统源码 短链防红域名系统 带后台

简约在线生成短网址系统源码 短链防红域名系统 带后台 安装教程&#xff1a;访问 http://你的域名/install 进行安装 源码免费下载地址抄笔记 (chaobiji.cn)https://chaobiji.cn/

图像分割各种算子算法-可直接使用(Canny、Roberts、Sobel)

Canny算子&#xff1a; import numpy as np import cv2 as cv from matplotlib import pyplot as pltimg cv.imread("../test_1_1.png") edges cv.Canny(img, 100, 200)plt.subplot(121),plt.imshow(img,cmap gray) plt.title(Original Image), plt.xticks([]), …

MySQL数据库之UNION 和JOIN连接的区别?

UNION和JOIN连接是用于合并表中数据的两种不同方法。 1、JOIN连接&#xff1a; 用于在查询中将两个或多个表中的行基于它们之间的关联条件进行匹配。JOIN操作允许您将来自不同表的相关数据组合到一起&#xff0c;以便一次性检索所有相关信息。JOIN操作通常涉及使用ON子句指定…

电文加密(C语言)

一、题目说明&#xff1b; 即第1个字母变成第26个字母&#xff0c;第i个字母变成第(26 - i 1)个字母&#xff0c;非字母字符不变。 二、N-S流程图&#xff1b; 三、运行结果&#xff1b; 四、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h&g…

C语言深入理解指针(4)--指针笔试题解析

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 C语言深入理解指针(4) 收录于专栏【C语言学习】 本专栏旨在分享学习C语言学习的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. size…

【机器学习300问】79、Mini-Batch梯度下降法的原理是什么?

Mini-Batch梯度下降法是一种将训练数据集分成小批次进行学习的优化方法&#xff0c;通过这种方式&#xff0c;可以有效地解决内存限制问题并加速学习过程。 一、为什么要使用Mini-Batch&#xff1f; 在机器学习尤其是深度学习中&#xff0c;我们常常面临海量数据处理的问题。如…

吴恩达 深度学习 神经网络 softmax adam 交叉验证

神经网络中的层&#xff1a;输入层&#xff08;layer 0&#xff09;、隐藏层、卷积层&#xff08;看情况用这个&#xff09;、输出层。&#xff08;参考文章&#xff09; 激活函数&#xff1a; 隐藏层一般用relu函数&#xff1b; 输出层根据需要&#xff0c;二分类用sigmoid&…

ExcelVBA在选择区域(有合并)中删除清除空行

【问题】 关于删除空行&#xff0c;以前是用函数来完成工作的&#xff0c; 今天有人提出问题&#xff0c;传来这个文件&#xff0c; 现有数据&#xff0c;1w多行&#xff0c;其中有部分列有不同合并单元格&#xff0c;跨行也不一样。如果要进行筛选删除空行&#xff0c;有一定的…