用Qt写软件系列五:一个安全防护软件的制作(2)
2014-10-23 16:21
260 查看
引言
在上一篇中讲述了主窗体的创建和设计。主窗体的无边框效果、阴影效果、拖动事件处理、窗体美化等工作在前面的博客中早就涉及,因此上篇博文中并未花费过多笔墨。这一篇继续讲述工具箱(Tool Button)的实现。另外,在实现的过程中还做了另外一个贴心的小功能:可伸缩的侧边栏。不过后来发现应用起来后效果不佳,于是就没在主窗体中加入这个功能了,单独做了一个demo作为示范。工具箱的实现
工具箱是将若干的工具按钮组织在一起,为用户提供简便导航功能的一个组件。在Qt中实现这个功能不难,Qt库本身就提供了QToolButton和QToolBox两个类用于类似功能。在这里我们从QToolButton类派生一个子类自定义按钮动作。QToolButton类本身只提供了一些基本功能。因此我们需要实现一些事件处理器来自定义工具按钮的动作和外观。看码说话:
+
View Code
在该子类中我们重写了enterEvent(),leaveEvent(), paintEvent(), mousePressEvent()这几个事件处理函数。分别对应鼠标进入、离开、点击按钮区域事件,paintEvent()则用于绘制按钮的外观。此外,还是用了几个状态变量,用于记录鼠标当前的移动状态。利用这些状态,我们就能顺利实现不同状态的外观绘制。值得注意的是doPaintStuff()这个函数。这个函数实际做的工作是给工具按钮添加垂直的渐变效果。使用了QLinearGradient这个类,可以实现线性的渐变效果,这在很多界面元素设计中都非常有用。
在主函数中怎么调用这个自定义的按钮类呢?
+
View Code
可伸缩的侧边栏
还是看看什么叫做可伸缩的侧边栏,这样的功能在QQ的聊天窗口就可以看见:侧边栏的收缩可以在需要的时候隐藏部分组件,从而为其他组件提供更为广阔的视角。如上图中的侧边栏收缩为文本框组件提供更多的空间,整个界面上看起来也更为清爽。稍微一剖析:这个边栏要能点击,点击之后要切换图标,响应的组件要隐藏。如此一分析,代码可如下编写:
+
View Code
可以发现这里的侧边栏果然一直固定在最左侧,要达到QQ聊天界面那要的效果呢,只需要改几行代码就好了:
小结
这一篇主要讲了上篇遗留的一个功能,工具按钮组的开发。另外,实现了另外一个功能:侧边栏的伸缩。下一篇继续树形控件(tree widget)、堆栈式窗口布局(stacked layout)的讲解。转载自:http://www.cnblogs.com/csuftzzk/p/Trojan_Assessment_Platform_2.html
相关文章推荐
- 用Qt写软件系列五:一个安全防护软件的制作(1)
- 用Qt写软件系列五:一个安全防护软件的制作(2)
- 用Qt写软件系列五:一个安全防护软件的制作(1)
- 用Qt写软件系列五:一个安全防护软件的制作(3)
- 用Qt写软件系列五:一个安全防护软件的制作(3)
- PHP相关系列 - 某开源php软件的一个安全漏洞所想
- 用Qt写软件系列三:一个简单的系统工具(上)
- 用Qt写软件系列三:一个简单的系统工具之界面美化
- 用Qt写软件系列三:一个简单的系统工具之界面美化
- 用Qt写软件系列三:一个简单的系统工具之界面美化
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- 收集的13个杀毒软件和安全防护软件(有图哦)
- 本文教你如何使用autoconf、automake等来制作一个以源代码形式(.tar.gz)发布的软件、并可在执行configure时使用自定义参数。
- MetaTrader软件的功能扩展(关于程序补丁制作的一个例子)
- 制作一个能够自动和人一起玩泡泡堂游戏的软件
- 推荐一个免费的ARP防护软件
- Qt系列软件包 (搞不清Qtopia Core,Qt Extended,Qt-embedded.....的过来看看)--转载
- “软件宝宝”出生前,安全系列文章(一)
- 使用autoconf、automake等来制作一个以源代码形式(.tar.gz)发布的软件、并可在执行configure时使用自定义参数
- 再推荐一个安全的好软件