Github上优秀开源C++项目推荐第四弹


Github上优秀开源C++项目推荐第四弹文章插图
KuGouDemo
用Qt实现的高仿酷狗音乐 。 个人觉得比下面推荐的QtMusic质量要高 , 相应的难度也要大一些 。 其实这个项目我早就发现了 , 而且之前还在里面提取了左侧那个自定义的tab窗口控件用在了我自己的项目中 。
Github上优秀开源C++项目推荐第四弹文章插图
QtMusic
Qt QtMusic是基于Qt C ++实现的 , 编译后支持跨平台运行编写的音乐播放器 。 包含歌曲播放 , 歌单管理 , 歌词显示以及网络歌曲和换肤等功能 , 界面友好 。

  • 歌曲播放使用Qt自带的媒体库实现了歌曲的播放 , 支持mp3 , wma等音乐格式 。
  • 歌单管理使用Qt自带的图形库实现了歌单管理的界面 , 重写了一些事件函数 , 实现了新建歌单 , 拖拽歌曲 , 歌曲高亮等功能 。 使用Qt封装的SQLite数据库 , 实现了歌曲 , 歌单的存档 。
  • 歌词显示通过手写字符串匹配解析了lrc格式的歌词文件 , 然后通过二分查找实现了显示某时刻的歌词 。
  • 网络歌曲利用网易音乐API , 通过post和get方法获得歌曲 , 并使用QMediaPlayer直接播放网络歌曲 。
下面是我编译以后试用的动态图 , 但是我发现不能播放歌曲 , 可能是长时间没人维护了 , 网易云的API版本太低的问题 , 我也没有详细的定位 , 但是实现方法和思路还是很有借鉴意义的 。
Github上优秀开源C++项目推荐第四弹文章插图
MapGraphics
用Qt编写的基于图块的“草绘地图”库 。 它的目的是使C ++ / Qt开发人员能够轻松地向其应用程序添加漂亮的交互式地图 。
Github上优秀开源C++项目推荐第四弹文章插图
Magic-Tower-Qt【Github上优秀开源C++项目推荐第四弹】
一个用Qt实现的打怪、升级、爬塔的小游戏 , 是男人就上20层 。
  • GUI:主要使用QGraphicsview 。
  • 数据库:连接到本地sqlite数据库 。
  • 作弊:您可以在“作弊”中选择作弊选项!菜单 , 然后随心所欲 。 XD(GodMode =>与怪物战斗不会降低您的HP , 但会增加它!)
  • 性别:不同的性别具有不同的基本属性 。
  • 商店:您可以在此处购买诸如hp , 攻击 , 各种钥匙之类的东西 。
  • 书籍:您可以抬起头来 , 在这层楼上更多地了解怪物 , “预期的损坏”非常有帮助 。
  • 错过+暴击:战斗中会出现一些随机的错过或致命伤害 , 因此没有绝对的最佳结果 。
  • BGM:使用qmediaplayer(尚未完全完成 , 因此我仅使用示例BGM) 。
  • NPC:他们会给你一些建议 。
  • 升级:杀死足够的怪物 , 您将升级 , 所以要勇敢!
  • 帮助:游戏开始后 , 您可以按“ h”键寻求帮助 。
  • 不同的结尾:有三个不同的结尾 , 希望您能找到一个不错的:)

Github上优秀开源C++项目推荐第四弹文章插图
QtSnake使用C++/QT图形视图框架开发的贪吃蛇游戏 , 类似于之前手游上挺火的贪吃蛇大作战 。
Github上优秀开源C++项目推荐第四弹文章插图
QMarkdownTextEdit
QMarkdownTextEdit是一个C++的Qt QPlainTextEdit小部件 , 支持Markdown高亮和其他一些功能 。
  • Markdown突出显示
  • 代码语法高亮
  • 点击链接 Ctrl + Click
  • 与Tab和一起缩进Shift + Tab
  • 与重复的文字 Ctrl + Alt + Down
  • 用搜索文本 Ctrl + F使用Up和在搜索结果之间跳转Down使用关闭搜索字段 Escape
  • 用替换文本 Ctrl + R您也可以用正则表达式或整个单词替换文本
  • 非常快
  • 以及更多...

Github上优秀开源C++项目推荐第四弹文章插图
Github上优秀开源C++项目推荐第四弹文章插图
Madplotlib
Qt图表的c++包装器 , 外观像matplotlib , 但不是 。
Madplotlib是一个c++头文件库 , 提供简单的2D绘图功能 , 类似于Python的matplotlib 。 Madplotlib在背后使用Qt图表来呈现外观很酷的图 , 这些图很容易在Eigen的帮助下创建 。
使用时 , 确保使用Qt 5.7或更高版本 , 并且已正确安装Eigen3.x 。 之后 , 只需将Madplotlib.h添加到您的项目中 , 用法如下:
Eigen::ArrayXf a = Eigen::ArrayXf::LinSpaced(20, 0, 2000);Eigen::ArrayXf b = Eigen::ArrayXf::LinSpaced(20, 0, 100);Eigen::ArrayXf c = Eigen::ArrayXf::Zero(20);b = b * b;c = 1000;Madplotlib plt;plt.title("Test 5: Linear vs Exponential vs Flat");plt.ylabel("Y Values");plt.xlabel("X Values");plt.plot(a, QString("label=Linear"));plt.plot(b, QString("label=Exponential"));plt.plot(c, QString("label=Flat"));plt.legend("loc=center right");plt.show();