STL C++ 二维MAP查找find()函数的使用
放在前面STL中的unordered_map类若想要实现二维map可以这样写
1unordered_map<char, unordered_map< char, string> > Map;
这样相当于是一维二维的的数据类型为char,内容为string使用起来就是
1Map['A']['B']="AB";
不过若是我们想要给定了一个key<char,char> 查找这个二维map是否存在该key的值要怎么写呢?
查找二维map的值对于一维的我们直接调用成员函数find()就可以了不过对于二维的,我们可以这样写:
12345//查找Map['A']['B']if((Map.find('A')!=Map.end()||Map.end()->first=='A') &&(Map['A'].find('B')!=Map['A'].e ...
QT中使用QSS将QMainWindow设置为圆角边框
前言使用QT中的QSS是一种美化可视控件非常高效的方式,QSS可以十分轻松地构建出优美的界面。
有时候我们想使用QSS来将QMainWindows界面设置为四角为圆角,但却发现无法设置,或底部背景仍是直角。
表现我们想设置QMainWindow圆角,通常会习惯这样写qss:
123456QMainWindow{ /* 设置圆角 */ border-radius: 15px; /* 设置背景颜色 */ background-color: rgb(67, 94, 134);}
可以看到设置的背景颜色生效了但是圆角没有生效,继续尝试发现改成使用QWidget也不行
查找各种资料之后发现QMainWindow是不支持qss的radius属性的,因为他们没有了frame层。
那么我们要如何实现圆角效果呢,我们可以换个思路
观察到QMainWindow下还涵盖了centralwidget控件,它实际上是QWidget类的
我们可以设置centralwidget的qss效果,并将QMainWindow背景隐藏如下:在QSS中设置
1234QWidge ...
QtQSS注释导致效果失效原因
前言QSS注释某一部分之后导致后面的控件设置的QSS失效
这大概率是你嵌套注释了,QSS同CSS一样是不允许嵌套注释的
原因如下代码中QWidget#centralwidget已经存在部分注释
123456789101112131415QWidget{ /* background-color: #48a5fd; */ border-radius: 15px; font-family:Microsoft Yahei,sans-serif; outline: none;}QWidget#centralwidget{ background-color: #c3f6ff; border-radius: 15px; /* background-image: url(:/bg/QSS_IMG/720p.jpg); */}QMessageBox { background-color: rgb(67, 94, 134); /* border-image: url(:/bg/QSS_IMG/720p ...
树莓派2022新版系统首次启动SSH连接拒绝解决办法
前言今天树莓派4B板子到手了,跟着网上和书籍的教程下了个2022/4月份的完整版镜像烧到sd卡安装。
因为手头没有显示器micohdmi转接线,所以打算ssh连接。但跟着安装教程wifi和ssh啥的都配置了,用pi用户ssh连接总提示请求拒绝。
上stackoverflow一查原来是新版系统取消了默认用户,好家伙直接失效了全网大部分教程。
根据文档,如果你使用官方的工具Pi Imager刷入sd卡前设置了用户密码并开启了ssh,那么连接就没什么问题,用设置好的用户就行了。
但如果你是用第三方工具将镜像烧入sd卡,因为没有设置用户而且不存在默认的pi用户所以你第一次启动无法用ssh连接。
解决办法
最好的方法就是用官方的工具Pi Imager重新烧录镜像到sd卡,记得设置好连接的wifi,用户,开启ssh服务。
还有一种方法就是在boot分区下创建一个文件名为userconf.txt的文件,在文件里写入username:encrypted-password。 其中username是你想要的用户名,encrypted-password是你的想设置的密码经过加密后的值。这个值怎么得到呢?官方 ...
QT QByteArray和QString十六进制互相转换
前言在使用QT进行串口通信时候总会涉及到QByteArray和QString互相转换还有十六进制的问题,这里写一下大概转换的方法
转换QString 转 QByteArray以下这三种都可以,区别主要是表现的字符集范围,详细看官方注释
1234567891011121314QString str("HelloWorld"); QByteArray bytes = str.toUtf8(); /**Returns a UTF-8 representation of the string as a QByteArray.UTF-8 is a Unicode codec and can represent all characters in a Unicode string like QString. **/QByteArray bytes = str.toLocal8Bit(); // /**Returns the local 8-bit representation of the string as a QByteArray. The returned byte a ...
C++中,hpp文件的使用
hpp文件是Header plus plus的缩写,实质是将.cpp的实现代码混入.h头文件,即声明与定义(实现)都包含在同一个文件中。
该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。
实现代码将直接编译到调用者的obj文件中,不再生成单独的obj。
采用hpp将大幅度减小project中的cpp文件数与编译次数,也不再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。
hpp文件与h文件的联系:
与*.h类似,hpp是C++程序的头文件
是VCL(Visual Component Library的缩写,即可视组件库)专用的头文件,已预编译
是一般模板类的头文件
一般来说,*.h里面只有声明,没有实现;而*.hpp里面既有声明也有实现,显然后者可以减小cpp的数量。
一些特征
是Header Plus Plus 的简写。
与*.h类似,hpp是C++程序头文件 。
是VCL 专用的头文件,已预编译。
是一般模板类的头文件。
一般来说,*.h里面只有声明,没有实现,而*.hpp里声明实现都有,后者可以减 少. ...
《泰坦陨落2》动态皮肤(VTF)MOD制作教程
前言泰坦陨落2是由重生娱乐制作组开发一款快节奏FPS游戏,游戏由其畅快的高机动性枪战体验和独有的泰坦机甲而广受玩家好评。
本文是一篇关于如何为泰坦陨落2制作动态武器皮肤的教程。教程内容全部由本人HK560编写,感谢各位热爱泰坦陨落的玩家支持。
本教程为武器动态皮肤制作教程,其他泰坦皮肤或铁驭皮肤可参考本教程和其他文档进行类推,无论是是否动态静态的。
注意:泰坦陨落2皮肤制作有两种方式:一种是VTF方式,一种是DDS方式
简单描述差异: VTF方式能实现动态效果,可以打包为北极星MOD方便北极星启用禁用,缺点是无法使用法线贴图AO贴图等只能使用基础颜色贴图。而DDS方式只能是静态贴图,但是能够使用游戏所支持的法线贴图AO贴图发光贴图等,能再现游戏内贴图效果。两种方式打包制作复杂度类似。
本文教程是动态皮肤教程,所以是VTF方式制作皮肤。
转载请标明原作者和原文章地址
制作动态皮肤的大体流程流程简述:
获取武器模型文件
获取武器模型对应贴图文件
处理模型文件
根据获得到的资源文件进行基础皮肤制作
将基础皮肤处理为动态皮肤
压缩动态皮肤文件
打包导入皮肤文件
动态皮肤原理:动态皮肤的贴图 ...
【NorthStarCN】 一个适用于泰坦陨落2的MOD框架
什么是 NorthStarCN 北极星CN ?NorthStar 是一个MOD和MOD框架,它允许玩家用户使用脚本架设他们自己的泰坦陨落2客制化服务器并自定义内容,也能够架设 vanilla 内容。对于普通玩家而言,使用NorthStar能够游玩由NorthStar架设的服务器房间,不经过官方服务器。
NorthStarCN 则是基于原版NorthStar,进行本地化修改,修改了MasterServer并进行了部分汉化,使得在中国大陆环境下能更流畅使用NorthStar框架并进行多人联机,并提供相关可使用的MOD。该项目由国内泰坦陨落粉丝玩家维护。
NorthStar 和 NorthStarCN 都属于早期项目,仍有许多地方需要完善,如果您遇到任何问题欢迎积极交流。
我们由衷感谢感激原作者为泰坦陨落2社区贡献和付出,本项目遵守MIT协议。
快速开始
首先你需要下载NorthStarCN的客户端并安装,请访问发布仓库下载
将下载下来的客户端压缩包的所有文件解压到泰坦陨落2游戏的根目录
启动并登陆Origin完毕后,点击运行游戏根目录下的NorthstarLauncher.exe即可启动
...
《代码整洁之道》阅读笔记
代码整洁?
代码永远存在,无论软件行业发展,代码永远是各种工具的基石地基,没有代码这些东西工具也不会存在,无代码运动就是个笑话
糟糕的代码会给项目发展逐渐显现弊端,混乱增加,生产力下降,最后趋于零,这是非常可怕的。
花时间保持代码整洁不但有关效率,还有关生存。整洁你的代码,保护你的饭碗。
多数经理想要好代码,他们想要知道代码实情,所以不应当羞于高数项目进展实情
写出整洁的代码是困难的,需要技巧和不断练习
整洁代码读起来是愉悦的,糟糕的代码会引发混乱,别人修改往往会越来越乱
代码应当讲述事实,不引人猜测,便于其他人增加修改
如何整洁你的代码,不如说是如何在意你的代码
不要重复代码,只做一件事,表达力,小规模抽象
名字要起的有意义
变量,函数,类的名字就应该能解释大部分的东西,备注都是额外的,能做到不需要额外备注就是最好的
避免取容易引发歧义猜测的名字,比如一些专有名字,大家耳熟能详但在代码中缺失另一种含义的名字
accountList 除非你是真的用List类才这样写。否则还是写成AccountGroup吧
太过相似的变量名也不合适,应该做容易区分的,尤其是“I”“l” 还有“O”“0 ...
在Hexo博客上使用自定义Live2D
放在前面之前看到有很多人用hexo博客左下角右下角总有个live2d,自己也稍微研究了一下,发现用起来还是蛮简单的,作者提供了几个live2d模型的包,但其实我们是可以使用其他的自定义的live2d模型
安装使用live2d,并配置自定义live2d模型
首先安装 hexo-helper-live2d 仓库链接 官方文档写了怎么安装配置了,按照步骤来即可。不同hexo主题应该是不受影响的。
配置模型,官方文档里写了需要在博客根目录创建一个live2d_models模型文件夹,然后你的模型文件要放在一个文件夹内,再把这个文件夹放到live2d_models文件夹下面文件目录示例:
使用自定义live2d模型,首先确保你的模型文件是旧版的live2d,新版好像是不兼容的。然后将你的模型json文件改名为XXX.model.json,XXX为模型名字,你可以自己设置自己想要的名字。然后将整个模型文件夹的名字也改为XXX 把这个文件夹放到live2d_models。 要使用这个文件夹就在_config.yml的live2d配置 live2d.model.use 配置为XXX ,就如下图一样 ...