BlogBlog
Home
文章
时间线
  • English
  • 简体中文
Home
文章
时间线
  • English
  • 简体中文
  • 2024OSPP KDE项目中期总结

2024OSPP KDE项目中期总结

OSPP项目开始已经过去三周了,三周过去,我的项目已经取得了一定的进展。

第一周 7月1号——7月7号

在项目的第一周,在导师的帮助下,我首先配置好了一个合适的开发环境,并确定了项目的首先迁移的应用为Blinken。除此之外,也搭建这个项目博客,目前博客已经被KDE planet收录。

目前使用的开发环境在一台Fedora workstation 40 的Virtual Box虚拟机上,在这台虚拟机上我可以编译构建KDE应用,并进行Qt开发。

构建KDE开发环境推荐使用KDE官方提供的kdesrc-build,同时也推荐在KDE的Neon系统下进行开发,可以选择使用docker 或者虚拟机

构建Qt安卓开发环境比较简单的方法是使用[Qt Online Installer](Get and Install Qt | Qt 6.7)和QtCreator 装好QtCreator之后,在Editing-> Perferences->devices-> Android 那里可以选择自己需要的开发套件,QtCreator会自动下载需要的Sdk和Ndk。

第二周 7月8号——7月14号

在导师的建议下,我开发了一个简单的Tic-Tac-Toe的QML游戏作为练手。 这个游戏使用QML绘制了一个简单的页面,并使用C++class控制游戏逻辑,我即将迁移的游戏也将会是这种架构。

游戏目前实现的特性有

  1. 多语言本地化支持
  2. 具备单元测试
  3. 可以跨平台运行

Tic-Tac-Toe游戏目前已经被我放到KDE invent上。hanyang zhang / TicTacToe · GitLab

对QML应用做本地化支持需要使用Qt提供的本地化工具lupdate、lrelease等。 但是因为项目使用Cmake构建,Qt也提供了相应的Cmake方法:qt_add_translations | Qt Linguist Manual

另外,我在构建QML安卓应用时遇到了一些困难,见: QML 安卓应用构建与运行 | Blog

第三周 7月15号——7月21号

在这一周我正式开始迁移Blinken的工作。

在研究了Blinken的源码之后,我发现Blinken的界面是由一个名为Blinken的类绘制的,这个类有1000多行,绘制逻辑一部分为操作Blinken.svg中元素,另外一部分为使用QPainter直接绘制。

但是遗憾的是,QML中并没有提供如Qtwight那样操作SVG图片的功能,于是我用Adobe Illustrator和Inkscape对SVG图片进行了拆分和编辑,将所有元素分别单独拆为文件,并用QML将这些元素组装了起来。

image

对UI的修改花费的时间比我想象中的长,不过一周过去,我基本完成了对Blinken界面的绘制,接下来主要是修改一些页面细节,以及将Blinken的逻辑转移过来。

值得一提的是,QML并未提供非矩形的MouseArea供使用,需要自己写一个类来实现这个功能。不过好在早期版本的文档里提供了一个这样的examplemaskedmousearea « customitems « quick « examples - qt/qtdeclarative.git - Qt Declarative (Quick 2) 虽然不知道为什么这个例子在最新版本中被删除了,但应该可以参照着实现。

Last Updated:
Contributors: hanyang zhang