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.hqwc.cn/news/692170.html

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

相关文章

Linux基础命令(续)

17&#xff0c;wc命令 作用&#xff1a;统计行数、单词数、字符个数 格式&#xff1a; wc 选项 文件 wc passwd 26 36 1159 passwd26&#xff1a;行数 36&#xff1a;单词数 1159&#xff1a;字符数 passwd&#xff1a;文件名wc autofs.conf 426 2604 15137 autofs.conf426…

第⼀个SpringBoot程序

Spring Boot介绍 Spring让Java程序更加快速, 简单和安全. Spring对于速度、简单性和⽣产⼒的关注使其成为 世界上最流⾏的Java框架。 Spring Boot 的诞⽣是为了简化 Spring 项目而诞生的 创建Spring Boot项目 File->New Project->Spring Initializr 选择2.多的版本 创建…

【大数据】HDFS、HBase操作教程(含指令和JAVA API)

目录 1.前言 2.HDFS 2.1.指令操作 2.2.JAVA API 3.HBase 3.1.指令操作 3.2.JAVA API 1.前言 本文是作者大数据专栏系列的其中一篇&#xff0c;前文中已经详细聊过分布式文件系统HDFS和分布式数据库HBase了&#xff0c;本文将会是它们的实操讲解。 HDFS相关前文&#x…

spsr 的恢复出错,导致 thumb 指令集的 it 条件运行指令运行异常,清晰的调试思路帮助快速解决问题

记一次调试过程 这是一个在 arm 架构上的 RTOS 上的调试过程。问题现象为使用 thumb 指令集的 libgcc 库的情况下&#xff0c;浮点运算随机出错。经过一番追踪调试&#xff0c;逐步缩小问题范围&#xff0c;最后定位问题&#xff0c;成功解决。 场景 在某款的国产 RTOS 上&a…

DOM 文档对象模型

一、DOM简介 1、什么是DOM DOM 文档对象模型简称&#xff0c;是W3C组织推荐的处理可扩展标记语言的标准编程接口 W3C已经定义了一系列的DOM接口&#xff0c;通过这些接口可以改变网页的内容、结构、样式 2、DOM树 DOM把以上内容都看做是对象 二、获取元素 获取页面元素&am…

电子资源|基于SSM+vue的电子资源管理系统(源码+数据库+文档)​

电子资源管理系统 目录 基于SSMvue的电子资源管理系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&am…

RPA正常跑,cmd输入cookies跑不出来,如何解决??

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

java基础之面向对象的思想

一、面向对象和面向过程的编程思想对比 面向过程&#xff1a;是一种以过程为中心的编程思想&#xff0c;实现功能的每一步&#xff0c;都是自己实现的&#xff08;自己干活&#xff09;。 面向对象&#xff1a;是一种以对象为中心的编程思想&#xff0c;通过指挥对象实现具体的…

【Java EE】网络原理——TCP1

目录 1.TCP协议格式 2.TCP协议的特点 3.TCP协议的核心机制&#xff08;十个&#xff09; 3.1确认应答机制 3.2超时重传 3.3连接管理 3.3.1三次握手基本流程&#xff1a; 3.3.2三次握手的意义或者解决的问题&#xff1a;&#xff08;面试题&#xff09; 3.3.3三次握手时…

并发——进程

1. 程序 程序&#xff08;program&#xff09;是什么&#xff1f; 计算机程序&#xff08;computer program&#xff09;一般是指以某些程序设计语言编程&#xff0c;能够运行于某种目标体系结构上 程序 数据结构 算法 数据结构&#xff1a;用来表示人们思维对象的抽…

【雅思写作】Vince9120雅思小作文笔记——P1 Intro(前言)

文章目录 链接P1 Intro&#xff08;前言&#xff09;字数限制题型综述&#xff08;problem types overview&#xff09;1. **柱状图&#xff08;Bar Chart&#xff09;** - 描述不同类别在某个或多个变量上的数据量比较。2. **线图&#xff08;Line Graph&#xff09;** - 展示…

day12-多线程

多线程 1.为什么要学习多线程 生活:流水线打工 public static void main(String[] args) { // 代码… for (int i 0; i < 10; i) { System.out.println(i); } // 代码... }多线程:多&#xff08;个&#xff09; 线程 1.1 进程和线程 线程&#xff1a;是进程中的…