DTK程序简单的开发教程(简易的浏览器)
Tofloor
poster avatar
Maicss
deepin
2020-12-03 18:51
Author

这段时间在自己做一个基于DTK开发的浏览器应用,不得不说这东西对我来说还是有点吃力的,不过我不追求进度,只是慢慢的,一点一点的来开发。一边学一边做,目前大概做成了这个样子。

项目地址:点击查看


支持窗口模糊特效,未来支持透明度调节(支持关掉以节省资源)

支持明暗切换

有圆角,跟随系统设置调节

有收藏夹功能(目前比较简陋,只能有一个一级列表)

除收藏夹外,其他设置还没法保存


现在介绍一下这个主窗口的组成:


如果不需要模糊特效的话,完全可以使用DMainWindow来代替DBlurEffectWidget(图中拼写错误)和DTitlebar的组合,因为DMainWindow就是一个圆角无边框窗口和一个DTitlebar的组合,但是DMainWindow提供了一些接口来定义阴影的宽度,深度,颜色,标题栏阴影等。

DTitlebar,这是块好地,得好好利用。

这个标题栏中支持添加任何控件,用setCustomWidget方法,添加一个Widget在里边,然后在这个Widget里边添加布局和控件即可。

如图:


这个标题栏也有很多有趣的接口,比如:

titlebar->setBackgroundTransparent(true); //可以让titlebar变为透明,此时如果父窗口是模糊特效窗口,将会把效果显示出来,否则将覆盖模糊效果

值得注意的是:

通常通过调用SetWindowIcon无法改变标题栏左侧的图标,你需要再次调用DTitlebar的setIcon接口才可以实现。

如果想要在标题栏的菜单按钮添加菜单,只需要定义一个QMenu然后调用setMenu即可。

亮色和暗色模式的适配,不得不说支持亮色模式和暗色模式绝对是软件本身的加分项。

connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [=](DGuiApplicationHelper::ColorType themeType) {
QColor main_color;
main_color=DGuiApplicationHelper::instance()->applicationPalette().highlight().color();//这是系统的活动用色
if(themeType==DGuiApplicationHelper::DarkType){//这里判断是否是暗色模式,判断后对你的图标,贴图,颜色等进行修改,用来展现一个你心目中最完美的暗色模式
qDebug()<<"Dark"; //在这里执行暗色模式下对ui界面的修改 btn_left->setIcon(QIcon::fromTheme("arrow-left"));
btn_right->setIcon(QIcon::fromTheme("arrow-right"));
btn_f5->setIcon(QIcon::fromTheme("refresh"));

}else {
qDebug()<<"Light"; //在这里执行亮色模式下对ui界面的修改 btn_left->setIcon(QIcon::fromTheme("arrow-left-dark"));
btn_right->setIcon(QIcon::fromTheme("arrow-right-dark"));
btn_f5->setIcon(QIcon::fromTheme("refresh_dark"));
} //在这里执行对活动用色的UI界面修改 });

上边这个是给大家提供的模板,需要包含头文件DGuiApplicationHelper。

当主题被修改时,会触发themeTypeChanged信号,然后返回他的颜色主题还有亮暗模式两个参数

活动用色想必大家都知道,在控制中心-个性化-通用中可以调节。

兼顾低性能主机,适当关闭模糊特效

DBlurEffectWidget有一个接口可以用来关闭模糊特效,但是这个接口多少有点鸡肋。

setBlurEnabled(false);//用这个接口关闭模糊后,效果是下边这个鬼样子,完全透明!


我找了一圈也没研究明白这玩意怎么让他变成不透明,没找到。

于是乎我就来了一波骚操作,在这个窗口上再放一个子Widget,然后用以下方法让他变成不透明并定义颜色。

QPalette plt;
plt.setColor(QPalette::Background,QColor(40,40,40,255));
w->setPalette(plt);

这里需要通过上边亮色和暗色模式来设置颜色,具体怎么办我就不赘述了。

授人以鱼不如授人以渔

下边和大家分享一下我学习DTK的几个途径

1.官方文档页面(链接)

2.gitee文档页面(链接)比较旧

3.官方代码仓库(链接)

4.官方例子(链接)需要clone下载自己编译

5.百度(可找到的资源相对比较少)

6.如果想马上上手,可以先用这个链接,这时我写的一个简单的样例,里边有详细的介绍,在这里就不多说了。

先写这些吧,这些基本操作基本够用了,其他好玩的东西等我慢慢学习整理后再分享给大家~

当然如果有大神想加入这个浏览器的开发,可以评论或者私信我,大家一起玩

由于个人技术和能力的限制,这个浏览器只是一个学习开发的项目,目前并没有打算以后正式打包发放给大家,大家如果想试用的话可以去项目地址下载源代码自行编译。






Reply Favorite View the author
Comments
poster avatar
ltree
2020-12-12 01:41
DTitlebar是好东西
poster avatar
stainsun
2020-12-04 20:24
感谢交流,祝喜欢分享的人:心想事成、马到成功。
poster avatar
oliverwang
2020-12-04 05:34
sudo apt install qtwebengine5-dev 否者报错 Project ERROR: Unknown module(s) in QT: webenginewidgets
All Replies
1 / 2
To page
忘记、过去
Moderator
2020-12-03 18:54
#1

前排围观,大佬辛苦啦

Reply View the author
Maicss
deepin
2020-12-03 18:59
#2

论坛的链接跳转是不是有问题,大家打开链接时复制打开吧[困]

Reply View the author
Fredoong
deepin
2020-12-03 19:14
#3

你这帖子可能要获奖了[鼓掌]

Reply View the author
Maicss
deepin
2020-12-03 19:36
#4
Fredoong

你这帖子可能要获奖了[鼓掌]

但愿能[尴尬]

Reply View the author
神末shenmo
Moderator
Spark-App
2020-12-03 20:32
#5

gitee那个不是你的仓库么?[开心]

平时多点下同步不就好了

Reply View the author
deltacatxx
deepin beta test group
2020-12-03 20:39
#6

可以模仿safari的UI,上面是工具栏下面是标签页.类似深度的文件管理器那样的

Reply View the author
Maicss
deepin
2020-12-03 21:31
#7
神末shenmo

gitee那个不是你的仓库么?[开心]

平时多点下同步不就好了

太慢了,懒得弄[污]

Reply View the author
Maicss
deepin
2020-12-03 21:32
#8
deltacatxx

可以模仿safari的UI,上面是工具栏下面是标签页.类似深度的文件管理器那样的

Linux用户大家的习惯还是chrome和火狐那样的吧

Reply View the author
sgb76
deepin
2020-12-03 22:54
#9

坚决顶一个!以后这样的技术贴多一些就好了。大佬辛苦了!

Reply View the author
Ziggy
deepin
2020-12-04 01:44
#10

会玩,啥时候公测

Reply View the author
爪巴戈
deepin
2020-12-04 02:04
#11

大赞,是不是可以理解,可以基于这个DTK框架,开发各种酷炫的GUI应用了

Reply View the author
Maicss
deepin
2020-12-04 02:12
#12
爪巴戈

大赞,是不是可以理解,可以基于这个DTK框架,开发各种酷炫的GUI应用了

是的,主要是贴近深度官方界面风格的应用,可以加入一些自己的想法[尴尬]

Reply View the author
Maicss
deepin
2020-12-04 02:13
#13
Ziggy

会玩,啥时候公测

公测?内测估计都不行[开心]

Reply View the author
Cris.Q
deepin
2020-12-04 03:43
#14

前来顶贴,大佬辛苦了

Reply View the author
element
deepin
2020-12-04 04:07
#15

其实自己很想做相关的东西  就是没有平静的心  坐下来研究这些东西了。。。

看来是年龄大了。。

Reply View the author
houyawei
deepin
2020-12-04 18:48
#16

收藏,准备学习学习

Reply View the author
神末shenmo
Moderator
Spark-App
2020-12-04 19:05
#17
element

其实自己很想做相关的东西  就是没有平静的心  坐下来研究这些东西了。。。

看来是年龄大了。。

永远保持年轻的心态!

Reply View the author
神末shenmo
Moderator
Spark-App
2020-12-04 19:06
#18
爪巴戈

大赞,是不是可以理解,可以基于这个DTK框架,开发各种酷炫的GUI应用了

Reply View the author
神末shenmo
Moderator
Spark-App
2020-12-04 19:06
#19
爪巴戈

大赞,是不是可以理解,可以基于这个DTK框架,开发各种酷炫的GUI应用了

Reply View the author
神末shenmo
Moderator
Spark-App
2020-12-04 19:08
#20
爪巴戈

大赞,是不是可以理解,可以基于这个DTK框架,开发各种酷炫的GUI应用了

Reply View the author
1 / 2
To page