Gitee

Qt开源作品27-鼠标定位十字线

坚强是说给别人听的谎言 提交于 2020-08-16 06:59:53
一、前言 上次有个群友在咨询这个问题,如何用Qt绘制一个鼠标定位的十字线,花了两分钟整了个,最没有含金量的一个demo,就是用drawline绘制了两条线,这个效果在经典的CAD软件中很常用,还有一些股票软件,也有这种十字线定位线,有时候需要在十字交叉地方获取对应点的数据来显示等。Qt来绘制各种效果还是非常方便的,还是那句话:心中有坐标,万物皆painter。 二、代码思路 void Widget::mouseMoveEvent(QMouseEvent *event) { lastPos = event->pos(); update(); } void Widget::mouseReleaseEvent(QMouseEvent *event) { //这里是鼠标按下的坐标,自己存到数据库 lastPos = event->pos(); update(); qDebug() << lastPos; } void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); QPen pen; pen.setWidth(5); pen.setColor(Qt::red); painter.setPen(pen); //绘制横向线 painter.drawLine(0, lastPos.y(), width(), lastPos

用云函数这一利器改写了ai抠图

北城以北 提交于 2020-08-16 06:25:25
抠图效果 引言 上次写了一篇用小程序实现ai抠图,就差一步可以能在小程序全盘使用第三方库去抠图,苦于不能将Buffer图片源转成base64赋给 <image> ,上了node.js后端去实现,这两天突然想起可以用云函数去实现,果断用云函数代替自己写后端。 纯微信小程序端实现ai抠图代码如下: wx.chooseImage({ count: 1, // 默认9 sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: res => { var tempFilePaths = res.tempFilePaths const file = tempFilePaths[0] this.setData({ origin: file }) console.log(file) wx.uploadFile({ header: { 'X-Api-Key': 'your key' }, url: ' https://api.remove.bg/v1.0/removebg', filePath: file, name: 'image_file', success: res => { const data = res.data

让你的GitHub下载飞速提升到2M/s以上

僤鯓⒐⒋嵵緔 提交于 2020-08-16 03:36:45
2020年7月27日整理发布多种GitHub加速方式! 转载自: https://code.pingbook.top/blog/2020/How-To-Speed-Github.html 1. GitHub 镜像访问 这里提供两个最常用的镜像地址: https://github.com.cnpmjs.org https://hub.fastgit.org 也就是说上面的镜像就是一个克隆版的Github,你可以访问上面的镜像网站,网站的内容跟Github是完整同步的镜像,然后在这个网站里面进行下载克隆等操作。 2. GitHub文件加速 利用 Cloudflare Workers 对 github release 、 archive 以及项目文件进行加速,部署无需服务器且自带CDN. https://gh.api.99988866.xyz https://g.ioiox.com 以上网站为演示站点,如无法打开可以查看开源项目: gh-proxy-GitHub 文件加速 自行部署。 3. Github 加速下载 只需要复制当前 GitHub 地址粘贴到输入框中就可以代理加速下载! 地址: http://toolwa.com/github/ 4. 加速你的 Github https://github.zhlh6.cn 输入 Github 仓库地址,使用生成的地址进行 git ssh

HotCorner-让Windows 10拥有macOS的触发角特性!

孤者浪人 提交于 2020-08-16 02:48:22
目录 简介 软件功能 下载 安装 卸载 使用 License 作者 FAQ 简介 macOS上有一个很方便的功能:“触发角”。通过这个功能可以设置当鼠标移动到屏幕的四个角时的触发事件,例如触发启动屏幕保护程序等,显示桌面等功能。和我们习惯的热键相对应,macOS将其称之为“Hot Corners(热角)”。笔者接下来要介绍的软件“ HotCorner "就是用于让Windows系统拥有像macOS那样的触发角,实现下面动图展示的效果: 当鼠标移动到屏幕的左上角时,自动打开Windows的时间轴试图,实现快捷切换任务。 这个程序来源于一个国外大神( Google 的信息安全工程师) Tavis Ormandy 的一个小项目 hotcorner ,他创作这个项目是因为习惯于一款Linux操作系统桌面:GNOME 3,这款桌面可以在鼠标移动到左上角时触发任务视图。他发现每当自己使用Windows 10时,总是会忘记Windows中并没有这个功能,四处寻找替代软件都无法令他满意,因此自己用C语言手撸了一个小程序来实现这个功能。但这个小程序只有一个功能:屏幕左上角触发Windows时间轴视图。并且软件的安装,卸载都需要通过命令行或者手动实现,十分不方便。 笔者在原先的项目基础上做出了如下改动: 用屏幕的左下角来触发开始菜单 将软件打包成安装引导程序(安装包) 给软件添加图标

Qt开源作品24-遮罩层窗体

做~自己de王妃 提交于 2020-08-16 02:27:51
一、前言 在有些项目中,需要在弹框的窗体背后遮罩原有主窗体,使得突出显示弹窗窗体,突然想到之前写过一个全局截屏的东东,原理一致,拿来改改。只需要引入一个头文件和实现文件,然后在主窗体中设置下需要遮罩的主窗体和可能弹窗窗体的类名即可,就是如此简单。可以支持多个窗体列表。 原理很简单,先安装事件过滤器,拦截QEvent::Show事件,拿到当前窗体,如果在需要遮罩的窗体列表中,则弹出半透明的窗体,大小和弹出的窗体大小一致,然后在激活当前弹出的窗体。 二、代码思路 //使用方法 //第一步,设置需要遮罩的父窗体 MaskWidget::Instance()->setMainWidget(this); //第二步,设置哪些弹窗窗体需要被遮罩 QStringList dialogNames; dialogNames << "frm1" << "frm2"; MaskWidget::Instance()->setDialogNames(dialogNames); //核心代码 void MaskWidget::setDialogNames(const QStringList &dialogNames) { if (this->dialogNames != dialogNames) { this->dialogNames = dialogNames; } } void MaskWidget:

后端程序员必备的 Linux 基础知识+常见命令(近万字总结)

被刻印的时光 ゝ 提交于 2020-08-16 01:33:58
大家好!我是 Guide 哥,Java 后端开发。一个会一点前端,喜欢烹饪的自由少年。 今天这篇文章中简单介绍一下一个 Java 程序员必知的 Linux 的一些概念以及常见命令。 如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!笔芯! 1. 从认识操作系统开始 正式开始 Linux 之前,简单花一点点篇幅科普一下操作系统相关的内容。 1.1. 操作系统简介 我通过以下四点介绍什么是操作系统: 操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。 操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。 操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用的负责人,统筹着各种相关事项。 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理 。 内核(Kernel)在后文中会提到。 1.2. 操作系统简单分类 1.2.1. Windows 目前最流行的个人桌面操作系统 ,不做多的介绍,大家都清楚。界面简单易操作,软件生态非常好。 玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台 Windows 用于玩游戏,一台 Mac

使用Spring Shell 快速开发自己的命令交互窗口

强颜欢笑 提交于 2020-08-15 21:52:43
Spring Shell 有时候,为了方便开发和测试服务器,并不需要一个漂亮的用户界面,使用一个简单的命令窗口即可。如下所示: 这里介绍一个快速,方便,易用,简单的交互式命令窗口开发组件-Spring Shell 没错,又是spring 生态中的。 源码地址 https://gitee.com/wgslucky/spring-shell-demo 创建项目 本项目是使用Eclipse作为开发的IDE,同样,直接导入到Idea之中也可以使用。使用的JDK需要是1.8或更高的版本,我测试过在JDK11上也可以使用。 在eclipse中创建maven项目:spring-shell-demo,然后在pom.xml中添加如下依赖: <parent> <!-- 添加spring boot 父pom依赖,这个不能少,spring shell官方的文档中没有写 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId>

Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统

北慕城南 提交于 2020-08-15 21:49:27
项目简介 项目来源于: https://gitee.com/sunnyandgood/OnlineMusic 本系统基于 Maven+JSP+Servlet+C3P0+Mysql 实现的音乐库管理系统。简单实现了充值、购买歌曲、poi数据导入导出、歌曲上传下载、歌曲播放、用户注册登录注销等功能。 难度等级:简单 技术栈 编辑器 IntelliJ IDEA 2020.1.1 (Ultimate Edition) 前端技术 基础:html+css+JavaScript 框架: JQuery + Bootstrap 后端技术 JSP+Servlet 数据库连接池:c3p0 数据库:mysql 5.7.27(个人测试使用) jdk版本:1.8.0_251(个人测试使用) web服务器:maven插件maven-jetty-plugin 6.1.7 项目构建:Maven 3.6.3(个人测试使用) 本地运行 若有疑惑可查看 视频版本 。 1.下载zip直接解压或安装git后执行克隆命令 git clone https://gitee.com/sunnyandgood/OnlineMusic.git 2.使用idea打开项目,配置maven、jdk即可。 3.打开Navicat For Mysql,创建 onlinemusic 数据库,并运行 onlinemusic.sql 。 4.修改

[原创][开源] SunnyUI.Net 开发日志:ListBox 增加跟随鼠标滑过高亮

梦想与她 提交于 2020-08-15 21:48:50
SunnyUI.Net, 基于 C# .Net WinForm 开源控件库、工具类库、扩展类库、多页面开发框架 Blog: https://www.cnblogs.com/yhuse Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://github.com/yhuse/SunnyUI SunnyUI.Net 系列文章目录 欢迎交流,QQ群:56829229 (SunnyUI技术交流群) SunnyUI.Net 开发日志:ListBox 增加跟随鼠标滑过高亮 QQ群里,寸木说,ListBox鼠标移动时,当前行需要焦点,我想了想,不难实现啊 不就是在鼠标移动时重绘Item嘛,何况选中的Item已经改了颜色了。 见UIListBox代码: protected override void OnDrawItem(DrawItemEventArgs e) { base.OnDrawItem(e); BeforeDrawItem?.Invoke(this, Items, e); if (Items.Count == 0) { return; } e.DrawBackground(); if (e.Index < 0 || e.Index >= Items.Count) { return; } StringFormat

ConcurrentHashMap 源码分析

大兔子大兔子 提交于 2020-08-15 21:37:08
和 HashMap 不同的是, ConcurrentHashMap 采用分段加锁的方式保障线程安全 ,JDK 1.8 之后,ConcurrentHashMap 的底层数据结构从 1.8 开始跟 HashMap 差不多。 HashTable 也是线程安全的,存储 Key-Value 键值对的数据结构, Key 和 Value 都不能为空,但不推荐使用,因为其所有的方法采用 synchronized 修饰,效率低。 Key 和 Value 都不能为 Null 的原因是:如果 map.get(key) 返回 null,可以认为是 value 的值本来就是 null,也可以认为 map 中不存在 key 的存储数据, 因此具有二义性 ,但 HashMap 在单线程环境,可以通过 map.containsKey(key) 判断,消除而已性。 但在多线程环境中,map.get(key) 和 map.containsKey(key) 是非原子的操作,可能在线程 A 的两个语句运行之间,其他线程 B 运行 map.put(key,value), 导致线程 A 无法消除上面的二义性 。 参考 https://www.cnblogs.com/thisiswhy/p/12059240.html 下图是 ConcurrentHashMap 的 UML 关系图。 1、底层存储结构 1.1、JDK 1.7