资源描述:
《用Qt写软件系列五:一个安全防护软件的制作(2)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、用Qt写软件系列五:一个安全防护软件的制作(2)引言 在上一篇中讲述了主窗体的创建和设计。主窗体的无边框效果、阴影效果、拖动事件处理、窗体美化等工作在前面的博客中早就涉及,因此上篇博文中并未花费过多笔墨。这一篇继续讲述工具箱(ToolButton)的实现。另外,在实现的过程中还做了另外一个贴心的小功能:可伸缩的侧边栏。不过后来发现应用起来后效果不佳,于是就没在主窗体中加入这个功能了,单独做了一个demo作为示范。工具箱的实现 工具箱是将若干的工具按钮组织在一起,为用户提供简便导航功能的一个组件。在Qt中实现这个功能不难,Qt库本身就提供了QTool
2、Button和QToolBox两个类用于类似功能。在这里我们从QToolButton类派生一个子类自定义按钮动作。QToolButton类本身只提供了一些基本功能。因此我们需要实现一些事件处理器来自定义工具按钮的动作和外观。 看码说话:CustomToolButton::CustomToolButton(constQString&path,QWidget*parent) :QToolButton(parent),m_filePath(path){ //Getthewidget'spalette,wedohavetochangethecolor
3、ofthetoolbutton. QPalettetext_palette=palette(); text_palette.setColor(QPalette::ButtonText,QColor(230,230,230)); setPalette(text_palette); //setthestyleofQToolButton. setToolButtonStyle(Qt::ToolButtonTextUnderIcon); //setthefontstyleoftoolbuttons //sincetheretu
4、rnvaluehasthetypeofconst,wehavetoremovethe //constnessifwewanttomodify. QFonttext_font=const_cast(font()); text_font.setBold(true); setFont(text_font); //setthefixedsizefortoolbuttons. QPixmapbackground(m_filePath); setIcon(background); setIconSize(ba
5、ckground.size()); setFixedSize(background.width()+25,background.height()+25); setAutoRaise(true); m_mousePressed=false; m_mouseHover=false;}/* *ArgumentstopColor,centerColor,bottomColorarealphavaluesforQColor. */voidCustomToolButton::doPaintStuff(inttopColor,intcenterCo
6、lor,intbottomColor){ QPainterpainter(this); QPenp(Qt::NoBrush,1); painter.setPen(p); //createlineargradientbrushtodrawthewidget QLinearGradientlinear(rect().topLeft(),rect().bottomLeft()); linear.setColorAt(0,QColor(230,230,230,topColor)); linear.setColorAt(0.5,
7、QColor(230,230,230,centerColor)); linear.setColorAt(1,QColor(230,230,230,bottomColor)); //paintthewidget. painter.setBrush(linear); painter.drawRect(rect());} voidCustomToolButton::setButtonPressed(boolisPressed){ m_mousePressed=isPressed; update();} voidCustomToo
8、lButton::enterEvent