WEB开发网
开发学院软件开发汇编语言 Qt之实现360安全卫士主界面(三) 阅读

Qt之实现360安全卫士主界面(三)

 2012-03-26 11:37:43 来源:WEB开发网   
核心提示:二、工具栏按钮效果设置 工具栏按钮继承于QToolButton;首先是设置按钮的基本显示效果了,去掉Qt自带的效果;包括文本颜色,Qt之实现360安全卫士主界面(三)(2),文本字体,样式大小等, 然后就是鼠标单击按钮时的效果了,和鼠标移到按钮上的实现原理基本一样;不过只是在槽函数中而不是由事件触发

二、工具栏按钮效果设置

      工具栏按钮继承于QToolButton;首先是设置按钮的基本显示效果了,去掉Qt自带的效果;包括文本颜色,文本字体,样式大小等,这些在我前几篇的博文中有讲解;代码如下所示:

View Code

//构造函数

MyBtn::MyBtn(const QString &strImage,const QString &strInfo,QWidget *parent):QToolButton(parent),

m_bOver(false),m_bPress(false),m_strImage(strImage),m_strInfo(strInfo)

{

    //文本颜色

    QPalette objPalette = palette();

    objPalette.setColor(QPalette::ButtonText, QColor(220,220,220));

    setPalette(objPalette);

     //文本粗体

    QFont &objFont = const_cast<QFont &>(font());

    objFont.setWeight(QFont::Bold);

    //样式

    setStyleSheet("QToolButton{border:0px;}");

    //大小

    setIconSize(QSize(TOOLICON_WH,TOOLICON_WH));

    resize(TOOLWIDGET_W,TOOLWIDGET_H);

    setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

    //设置图像文本

    setIcon(QPixmap(strImage));

    setText(strInfo);

    //连接press信号槽,表示按钮按下时

    connect(this,SIGNAL(pressed()),this,SLOT(slot_pressed()));

}

      OK,按钮的基本效果就出来了,按钮是透明的,只显示图片和文本,没背景信息。

      再一步就是设置鼠标移到按钮上的效果了,鼠标移到按钮上时,背景呈现立体的半透明效果;当鼠标移上去时,设置移动标志(m_bOver)为ture,当鼠标离开按钮时,设置移动标志为false;然后各自update发出重绘事件请求即可。

View Code

//enterEvent--鼠标移到按钮上事件

void MyBtn::enterEvent(QEvent *event)

{

    SetOver(true);

}

//leaveEvent--鼠标离开按钮事件

void MyBtn::leaveEvent(QEvent *event)

{

    SetOver(false);

}

//SetOver

void MyBtn::SetOver(bool bEnable)

{

    if(bEnable!=m_bOver)

    {

        //设置m_bOver标志位

        m_bOver = bEnable;

        //更新

        update();

    }

}

      在重绘事件里会对bOver进行判断来绘制鼠标移到按钮上的效果,后面讲解到重绘时再细节描述。

      然后就是鼠标单击按钮时的效果了,和鼠标移到按钮上的实现原理基本一样;不过只是在槽函数中而不是由事件触发了;信号和槽函数在构造函数中已经被连接上了,槽函数如下:

View Code

//slot_pressed--槽函数

void MyBtn::slot_pressed()

{

    SetPress(true);

    emit signal_parent(this);

}

      其中SetPress函数即设置按下标志(m_bPress)然后发送重绘请求。

View Code

//SetPress

void MyBtn::SetPress(bool bEnable)

{

    if(bEnable!=m_bPress)

    {

        //设置m_bOver标志位

Tags:Qt 实现 安全

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接