我前两天刚写了个360安全卫士的GO,今天就有100人浏览了,真是惊讶,呵呵;文采不好,各位看官见谅。

源码地址: https://github.com/JianBiHua/go_360_safe

现在从第一节进入第二节,前面的光秃秃的窗体该加点东西了。
先看看我的工程架构吧.
我解释下架构哈

  1. qss: 相当于html里的css,由于显示不一样的效果,如主题之类的实现,就可以通过动态加载不同的qss样式实现。
  2. resources: 看英文应该就明白了吧,资源呀,里面会放图片之类的东西。
  3. src: 代码呗
  4. ui: 对QT有研究的朋友就应该知道,qt里面的界面可以通过*.ui界面加载的,之后我也会在里面进行适量添加。
  5. 我们的入口函数当然是在main.go中喽。

好了,开始代码吧, 我只讲解一些核心的,其它的自行看代码吧。

上节代码我进行了封装,想做大项目,代码就不能太随意,否则,以后维护起来就会非常吃力了,所以封装是个不错的办法哦。

核心代码一:
下面这个代码是干嘛的呢?看着也肯简单, 就这么几句,
读取stylesheet.qss文件,并让程序使用该样式(我上面有说过,qss可以动态设置,以实现切换主题的目的,各位可自行实现。)

 // 设置qss,相当于html中的css文件data, err := ioutil.ReadFile("qss/stylesheet.qss")if err != nil {fmt.Println("File reading error", err)return}mw.app.SetStyleSheet(string(data))

这里有个要注意的地方,读取文件的路径,有些人直接用我的代码可能是跑不起来的,因为路径不对,读不到呀;看着代码明明就是这个路径呀,别急,看下图:
看这个project GOPATH,路径设置了,才能正确找到文件哦。

核心代码2:
画按钮喽, 代码有注释,挺详细的;但是运行起来可能会很失望,按钮不好看呀,一块一块的,别急,下面看怎么变漂亮哦。

// showTopLayout show top layout
// 显示顶部的布局
func (mw * MainWindow) showTopLayout() {widget := widgets.NewQWidget(mw.window, 0)widget.SetLayout(widgets.NewQVBoxLayout())widget.SetGeometry2(0, 0, WIDTH, 30)// ==============右侧四个按钮, 从右往左=============// 关闭按钮close := widgets.NewQPushButton(widget)close.SetGeometry2(WIDTH-30, 5, 20, 20)// 设置这个有什么用呢? 为了让qss找到这个QPushButtonclose.SetObjectName("close")close.ConnectClicked(func(checked bool) {// 应用退出mw.app.Exit(0)})// 最小化按钮min := widgets.NewQPushButton(widget)min.SetGeometry2(WIDTH-60, 5, 20, 20)min.SetObjectName("min")min.ConnectClicked(func(checked bool) {// 应用最小化mw.window.ShowMinimized()})// 菜单按钮menu := widgets.NewQPushButton(widget)menu.SetGeometry2(WIDTH-90, 5, 20, 20)menu.SetObjectName("menu")// 主题按钮theme := widgets.NewQPushButton(widget)theme.SetGeometry2(WIDTH-120, 5, 20, 20)theme.SetObjectName("theme")// 显示图标icon := widgets.NewQWidget(widget, core.Qt__Widget)icon.SetGeometry2(5, 5, 20, 20)icon.SetStyleSheet("border-image: url(resources/icon.png)")// 显示名字title := widgets.NewQLabel(widget,core.Qt__Widget)title.SetGeometry2(35, 5, 100, 20)title.SetText("360安全卫士11")// 字体颜色设置为白色title.SetStyleSheet("color: #FFFFFF")
}

这里就要发挥qss的作用了,看着像不像css,这他喵的就是css的写法呀!!!
下面实现的功能:

  1. 显示按钮正常状态时的图片
  2. 显示鼠标滑过时的图片
/***********************修改顶端右上四个按钮的图片***************************/
/* 这个是初始显示状态 */
QPushButton#close {border-image: url(resources/top/top_close.png);
}/* 这个有啥用呢? 鼠标点击上去响应*/
QPushButton#close::hover {border-image: url(resources/top/top_close_b.png);
}QPushButton#min {border-image: url(resources/top/top_min.png);
}QPushButton#min::hover {border-image: url(resources/top/top_min_b.png);
}QPushButton#menu {border-image: url(resources/top/top_menu.png);
}/* 我这里没有,点击的图片,所以设置跟普通一样 */
QPushButton#menu::hover {border-image: url(resources/top/top_menu.png);
}QPushButton#theme {border-image: url(resources/top/top_theme.png);
}/* 我这里没有,点击的图片,所以设置跟普通一样 */
QPushButton#theme::hover {border-image: url(resources/top/top_theme.png);
}

效果图如下, 我特意截了张按下最小化按钮的图片:

[go] 360安全卫士二 --闪烁的按钮相关推荐

  1. 360安全卫士添加信任区

    系列文章目录 文章目录 系列文章目录 前言 一.添加信任区 二.步骤 1.木马查杀 2.信任区 3. 添加信任的文件 总结 前言 360安全卫士经常会误报,虽然有想过卸载360,但他的有些小工具还挺实 ...

  2. 360安全卫士去广告、去多余按钮、与金山网盾等软件共存方法组合

    一.去除360安全卫士主界面广告的方法: 1.关闭360安全卫士/360杀毒的自我保护 2.打开360安全卫士安装目录下的"config/ExaminUI.xml"文件,将第三行的 ...

  3. C#制作高仿360安全卫士窗体二

    继上次C#制作高仿360安全卫士窗体<一>发布之后响应还不错,我的博客放肆雷特也来了不少的新朋友,在这里先谢谢大家的支持!我自己也反复看了一下觉得对不起大家,写的非常乱而且很少文字介绍.在 ...

  4. C#制作高仿360安全卫士窗体(四)- 水晶按钮

    项目越来越紧,我也乐此不疲.自从上次C#制作高仿360安全卫士窗体(三)出来之后,就开始有一些人在说为什么还在坚持写这么落后的东西.我想说的是,我是从事企业信息化工作的,所有程序都只对内部使用.所以只 ...

  5. 分析了一下360安全卫士的 HOOK(二)——架构与实现(zt)

    连接:http://blog.csdn.net/lionzl/article/details/7738182 上一篇的分析中漏掉了三个函数,现补上: NtSetSystemInformation    ...

  6. Qt之定制个性化系统托盘菜单(仿360安全卫士)

    一.效果 上图是我仿的360安全卫士的托盘菜单.顶部和底部的两个菜单项都将背景色设置成了360安全卫士的主题色,中间的大菜单项由6个按钮组成,像这些非规则的菜单项都需定制.虽然360安全卫士总是无缘无 ...

  7. 奇虎推出用360安全卫士推广网站技巧

    "如果你拥有自己的网站或者博客,就可以用360安全卫士来进行推广."这是奇虎最近在推出360安全卫士个人版时所采用的宣传用语.那么,究竟如何才能获得最好的推广效果呢?奇虎介绍五个相 ...

  8. 360安全卫士怎么设置允许电脑桌面云便签开机自启动?

    部分使用电脑桌面云便签软件Windows版的用户反馈,通过系统设置开启"开机时自动启动"之后软件仍然无法开机自启,此时可检测电脑是否安装有360安全卫士或者电脑管家等软件工具,开启 ...

  9. 360安全卫士、浏览器广告及杂碎讨厌功能屏蔽

    360有些所谓的功能太烦人,清理一下,清静. 目录 目录 一.360浏览器: (一)广告 (二)其他 三.360浏览器插件管理:se://plugin-manager/ 四.360浏览器多标签模式.多 ...

最新文章

  1. python逐行读取txt写入新的txt_Python逐行读取txt文本,按符合分割词并逐行写入txt...
  2. 确定关键质量的5大原则
  3. 7.3.7 - 并发多线程 死锁和递归锁
  4. 跑monkey需要安装什么_坤秀为您解析无漆木门安装需要注意什么?
  5. laravel 5.2 Auth用户认证教程
  6. ES6新特性_ES6语法糖-class中的getter和setter设置---JavaScript_ECMAScript_ES6-ES11新特性工作笔记038
  7. SQLi-LABS Less-2,联合注入+报错注入
  8. 2018年4月10日--python解决乱码和作业
  9. C 标准库——cmath/math.h
  10. 从拉萨骑行到珠峰大本营
  11. 传感器的定义、构成、分类
  12. Oracle 9.2.0.4的一个简单安装脚本(含安装前补丁p3006854)
  13. 同济大学 线性代数 第六版 pdf_线性代数同济大学第六版第一章课后习题答案
  14. 字典爆破php,密码字典 渗透测试字典 爆破字典
  15. Kettle Spoon入门学习
  16. excel进销存添加网页模块,可手机开单
  17. arm架构与体系结构
  18. 企业级代码静态测试工具Helix QAC——从应用层级保证代码质量和安全
  19. 软件销售渠道建设五步曲
  20. 【微信小程序】创建项目

热门文章

  1. 惯性导航的精度和误差解说
  2. mysql_insert_id作用_[单选] mysql_insert_id()函数的作用是:()
  3. Oracle-day01 下
  4. IC基础知识(九)三态门与高阻态
  5. 怎么把图片修改成600x800像素图片?
  6. 亚马逊测评的评论为什么老被删?
  7. ad hoc是什么的简称_Ad Hoc 网络中文全称是什么?
  8. Information:java: Errors occurred while compiling module IDEA报错
  9. 如何实现在屏幕上有漂亮的刀光效果并有星星环绕
  10. 蒙特卡罗(Monte Carlo)法