[Suggestions for Improvement] 希望DTK的应用开发,更多去使用QML,避免后面更多的bug出现
Tofloor
poster avatar
deepin
2024-05-30 04:22
Author

如题,我发现UOS商业版和deepin V23 RC版在DTK开发的编程语言选择方面不太一样。

首先,UOS商业版现在更注重其应用软件的稳定性,对Qt5 Widget C++编程的文档编写更完善。而deepin V23 RC版本,则开始大量使用Qt Quick提供的描述语言QML来编写原生应用的界面。

image.png

image.png

尽管使用QML还会时不时的编写一些C++代码内容,但是以目前UOS/deepin最终的桌面形态来讲,QML的代码编写风格会让应用程序客户端开发者能够更加接受,C++会更多以中间件、服务端或云端服务的形态进行出现。

况且,Qt Quick随着qt库的升级和完善,QML的业务处理也会逐渐减少C++代码的编写,还能增强对wayland视窗协议的支持。


我再次想说一下

Qt C++开发应用,虽然能让Qt应用在运行时变得稳定,但是现在PC硬件的存储容量在同价位上都能得到增加,性能方面已经不再是最极端的选择。而且,Qt C++在Qt库版本升级后,有些编程写法和以前都不太一样,甚至一些旧版本的应用程序源代码也不能直接在Qt 新版本中正常运行,会导致旧版本的应用程序需重新升级Qt库和改代码。以qt4、qt5和qt6的信号与槽的C++代码编写风格,其案例如下:

(1).Qt4版本,C++代码编写的信号与槽

image.png

(2).Qt5版本,C++代码编写的信号与槽

image.png

(3).Qt6版本,C++代码编写的信号与槽

image.png

从上面的代码Qt C++代码对比来看,Qt4版本的写法和Qt5、Qt6之间不太一样,但Qt5、Qt6的信号与槽写法更加明确,这就说明不同Qt版本,C++的新特性和新的编写方式不能向之前兼容,旧项目源代码必须重新重构和编写实现,才能更好去维护,也会导致Qt C++的学习周期变长。

image.png

在当今的应用软件开发领域、web端开发领域,界面程序开发者他们更希望编写界面和业务逻辑的代码在版本更迭时不会有大的变动,而是API库或SDK工具集直接升级、或直接更换,不会让前端view和业务代码有太太变化。

我的意思就是:把之前的Qt C++通用的代码和核心类封装为Sdk或其他API库,qml开发者对应用升级(升级,主要是程序的性能、界面动画的效率等等),可直接升级其Qt C++库版本或DTK C++库版本,QML编写的代码基本开发者不再大动干戈

当然,QML编写的应用程序也不是没有其它bug出现,我只是想让官方在QML对应的Qt C++库和源码进行封装和版本维护,并让QML的编写风格和开发者都能稳定下来,避免把后面更多时间用在处理qml。


最后,我还是希望官方能对QML的支持力度更大一些,尤其是官方的DTK文档不管是UOS版还是deepin版能够统一一下。在DTK核心库基本确定的条件下,去更多让QML试错并得以快速改善,而不是继续在Qt Widget C++代码上花更多时间。

Reply Favorite View the author
All Replies
北冥夜未央
deepin
Ecological co-builder
2024-05-30 05:43
#1

doubt

Reply View the author
f@deepin
deepin
2024-05-30 06:53
#2

agree

Reply View the author
卖了摩托继续写Bug
deepin
2024-05-30 09:15
#3

使用 qml 就能避免更多 bug 出现???啥逻辑...

Reply View the author
左心房的痛
deepin
2024-05-30 09:18
#4

QT5和6不是也支持4的写法吗?只是从宏转换字符串的名称变成了取成员函数地址写法了而已,再说这是QT的改变也不能算是C++的新特性吧?

Reply View the author
乾豫恒益
deepin
2024-05-30 10:26
#5

看着系统的快速发展,着实为其感到高兴与激动。

激动之余,看着系统在架构方面大幅度改变,又似乎看到了当年Windows的发展轨迹。

对于普通用户来讲,系统是吃饭时的桌面,多换几张桌布,赏心悦目,对于桌子的架构偶有小改,亦是欣欣然。

但是,如果时不时的换张桌子,甚至高低都有些不同,难免影响吃饭的心情。

如同作者所表达的一样,VB6与VBnet的区别与此类似。大幅度的改动,造成已有的APP无法升级,必须重构才行,于是乎,VBnet的不同版本出现,Micro乐此不疲,每次都会大力宣传,以为可以左右乾坤。

结果呢,VB几乎被抛弃了。。。

用户呢,也没啥选择:坚守着一个系统的版本 和 坚守着一个APP的最后一个版本。。。

如同前一段时间,有人问:WPS收费了怎么办?凉拌啊,给钱就好了,一大大堆的文件都用这个软件处理的,用其他的,出了问题,麻烦至极!

说个题外的:这个论坛里,还有几个在用richtextbox这种控件与文件格式?

Reply View the author
流浪的加菲
deepin
2024-05-30 11:30
#6

凡经理还是很有想法的,Qt版本差异的毛病确实存在,甚至不同的Qt版本,SVG格式的图片显示效果都会有差异🤧

Reply View the author
deepin
2024-05-30 17:11
#7
卖了摩托继续写Bug

使用 qml 就能避免更多 bug 出现???啥逻辑...

C++的bug也不少,QML的使用能统一调度Qt C++后端源码库,让应用开发者的产品稳定下来。

Reply View the author
把一切操作变成GUI
deepin
Backbone of ecological co-construction group
2024-05-30 17:13
#8

你上次不是说用rust的吗😂

Reply View the author
deepin
2024-05-30 17:16
#9
乾豫恒益

看着系统的快速发展,着实为其感到高兴与激动。

激动之余,看着系统在架构方面大幅度改变,又似乎看到了当年Windows的发展轨迹。

对于普通用户来讲,系统是吃饭时的桌面,多换几张桌布,赏心悦目,对于桌子的架构偶有小改,亦是欣欣然。

但是,如果时不时的换张桌子,甚至高低都有些不同,难免影响吃饭的心情。

如同作者所表达的一样,VB6与VBnet的区别与此类似。大幅度的改动,造成已有的APP无法升级,必须重构才行,于是乎,VBnet的不同版本出现,Micro乐此不疲,每次都会大力宣传,以为可以左右乾坤。

结果呢,VB几乎被抛弃了。。。

用户呢,也没啥选择:坚守着一个系统的版本 和 坚守着一个APP的最后一个版本。。。

如同前一段时间,有人问:WPS收费了怎么办?凉拌啊,给钱就好了,一大大堆的文件都用这个软件处理的,用其他的,出了问题,麻烦至极!

说个题外的:这个论坛里,还有几个在用richtextbox这种控件与文件格式?

我提到的并不算大改,DTK(qt5) C++已基本稳定,deepin/UOS只是目前并没有真正实现DTK的SDK花,升级qt6库DTK依然继续更,那么Qt C++应用开发者会对项目重新进行调试升级,但是QML的代码则改动量小、易维护。

Reply View the author
deepin
2024-05-30 17:17
#10
把一切操作变成GUI

你上次不是说用rust的吗😂

是说用rust,但是目前deepin-Unioncode还没有正式对其插件进行支持和完善。

Reply View the author
deepin
2024-05-30 17:21
#11
把一切操作变成GUI

你上次不是说用rust的吗😂

rust只能重写Qt C++核心库(Qt Core、Qt GUI)这部分内容,

应用的界面编写现在很多声明式写法,比如typescript、arkts等等。

真正的应用级开发,都是让开发者能够简单实现、易调试、学习周期短。

Reply View the author
deepin
2024-05-30 17:27
#12
卖了摩托继续写Bug

使用 qml 就能避免更多 bug 出现???啥逻辑...

即便有问题,应用开发者解决问题也没有Qt C++那么复杂。

Reply View the author