用Qt写软件系列五:一个安全防护软件的制作(1)
2014-10-23 16:14
162 查看
引言
又有许久没有更新了。Qt,我心爱的Qt,为了找工作不得不抛弃一段时间,业余时间来学一学了。本来计划要写一系列关于Qt组件美化的博文,但是写了几篇之后就没坚持下去了。技术上倒是问题不大,主要是时间不够充裕。这段时间写几篇关于界面整体设计的博文,从最基础的界面元素开始,到最后构建一个页面元素丰富的桌面应用程序。Trojan Assessment Platform是一个原型设计项目,只是实现了有限的一部分功能。远远还称不上是一个评估平台。这里仅仅侧重于用Qt做界面的实现。界面预览
首先还是看看整个程序运行起来是怎么回事:图一 基本信息页面
图二 实时监控图表
图三 进程快照
用过某些安全防护软件的用户,咋一看会有一种眼熟的感觉。没错,在界面的设计上本人参考了一些成熟软件产品的视觉设计。不过这显然不是关注的重点,用户体验设计上有种说法,遵循统一的界面设计原则,能降低用户的操作成本。这也算是一种业界标准了。
头部Banner
先看看“业界标准”是怎么做的!这里选择了两款具备代表性的软件:360安全卫士和金山卫士:图 三 360安全卫士的工具箱
图四 金山卫士的工具箱
观察以上两个截图的布局不难发现,界面布局如下:
顶部一个水平布局管理器可以搞定,左端放程序名及Logo,最右端部署按钮。这在Qt里面通过QHBoxLayout很容易做到。下面也用一个水平布局管理器,左端一个工具箱,等距放置,右边放大号的文本及Logo。好吧,开干!!
(1)按钮及文本
关于按钮的自定义绘制在前面的博文中已经有过讲解。但是前面讲的并没有覆盖到如何修改按钮的外观和背景图片。我们的做法是,从QPushButton派生出一个子类,在这个子类中实现图片的切换和状态管理。但是前提是,我们需要准备好按钮不同状态的图片(状态分别为鼠标悬停、按下、正常)。接下来要做的工作便是派生一个子类:
+
View Code
我们重写了Button类的一些事件处理函数。因为我们需要对鼠标悬停、进入区域、离开区域进行自行处理,所以我们这里重写了mousePressEvent(), mouseReleaseEvent(), enterEvent(), leaveEvent()这几个方法。在类中我们还定义了几个enum常亮,用来表示按钮的不同状态,在后面将被用到。注意setBtnBackground()函数,用于设置Button的背景图片。再来看看在CPP文件中是怎么实现的:
+
View Code
在CPP文件中的主要工作是,根据不同的按钮状态来设置不同背景图,这样才能实现不同状态的切换。注意在setBtnBackground()中设置了按钮的尺寸。这里是根据按钮图片的大小来设置的。否则的话容易导致图片大小和按钮大小不一致的现象。这样,一个自定义的按钮类就实现了。在主窗口中的调用方式:
主窗口背景
从上面的截图我们可以发现,无论是360安全卫士还是金山卫士,头部banner都有一个背景图。这个背景图是如何添加的呢?一种实现是方式是,为整个主窗体添加一个背景图,在背景图的基础上再留出一块区域放置central widget。这种效果对比如下:好了,这下就可以中间主体部分放置任何想放的控件了。关键的实现代码:
+
View Code
状态栏
QMainWindow自带一个状态栏,这个状态栏类(QStatusBar)的一些方法可用于设置状态栏上的组件、文本等,并可进行自由组合。我们这里的处理很简单,仅仅是添加了一个图标和一个文本,具体的代码很简单:+
View Code
由于我们主窗体是一个自定义大小的窗体,所以我们并没有使用到和QStatusBar相关的方法。由上面的窗口的布局也可以看得出来,这里的状态栏是分割出来的主窗体的一部分。使用水平布局管理器也很容易构造出复杂的布局。
小结
本文讲解了如何构建一个符合“业界标准”的软件界面,重点在主窗体的布局设计。后续的博文将讲解如何添加central widget及添加banner中的工具箱。转载自:http://www.cnblogs.com/csuftzzk/p/Trojan_Assessment_Platform_1.html
相关文章推荐
- 用Qt写软件系列五:一个安全防护软件的制作(2)
- 用Qt写软件系列五:一个安全防护软件的制作(2)
- 用Qt写软件系列五:一个安全防护软件的制作(1)
- 用Qt写软件系列五:一个安全防护软件的制作(3)
- 用Qt写软件系列五:一个安全防护软件的制作(3)
- PHP相关系列 - 某开源php软件的一个安全漏洞所想
- 用Qt写软件系列三:一个简单的系统工具之界面美化
- 用Qt写软件系列三:一个简单的系统工具(上)
- 用Qt写软件系列三:一个简单的系统工具之界面美化
- 用Qt写软件系列三:一个简单的系统工具之界面美化
- 好人共享的一个万能Ghost系统制作教程附相关软件下载第1/3页
- 制作一个能够自动和人一起玩泡泡堂游戏的软件
- 收集的13个杀毒软件和安全防护软件(有图哦)
- 本文教你如何使用autoconf、automake等来制作一个以源代码形式(.tar.gz)发布的软件、并可在执行configure时使用自定义参数。
- MetaTrader软件的功能扩展(关于程序补丁制作的一个例子)
- 不装杀毒软件制作一个百毒不侵的系统
- 推荐一个免费的ARP防护软件
- Qt系列软件包 (搞不清Qtopia Core,Qt Extended,Qt-embedded.....的过来看看)--转载
- “软件宝宝”出生前,安全系列文章(一)
- 使用autoconf、automake等来制作一个以源代码形式(.tar.gz)发布的软件、并可在执行configure时使用自定义参数