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

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

 2012-03-26 11:37:43 来源:WEB开发网   
核心提示: m_bPress = bEnable; //更新 update(); }} 其中slot_pressed槽函数中发送了一个自定义信号signal_parent,在工具栏部件中会对该信号进行连接,Qt之实现360安全卫士主界面(三)(3),其中信号的参数为按钮对

        m_bPress = bEnable;

        //更新

        update();

    }

}

      其中slot_pressed槽函数中发送了一个自定义信号signal_parent,在工具栏部件中会对该信号进行连接,其中信号的参数为按钮对象的指针。工具栏部件连接该信号的槽函数为slot_set函数:

View Code

//槽函数

void ToolBar:: slot_set(void *pObject)

{

    for(int nIndex = 0;nIndex<WIDGET_CNT;++nIndex)

    {

        if(m_listMyBtnPoint.at(nIndex)!=pObject)

        {

            m_listMyBtnPoint.at(nIndex)->SetPress(false);

        }

    }

}

      总体意思是:例如有A,B,C三个按钮在工具栏中,如果按下了A按钮,这是按下B按钮时,发送信号给工具栏,然后在工具栏对应的槽函数中进行指针值对比,如果不是B按钮,就调用其他对应按钮的SetPress函数,并设置为false,这样A按钮就没有按下去的背景效果了(排他性)。

三、工具栏按钮效果绘制

      绘制当然要在按钮的paintEvent事件处理函数中实现了,代码如下所示,代码注释的很详细,我就不多说了:

View Code

//重绘事件

void MyBtn::paintEvent(QPaintEvent *event)

{

    QPainter painter(this);

    //如果按钮被按下

    if(m_bPress)

    {

        //绘制被按下时的效果

        painterinfo(150,200,&painter);

    }

    else if(m_bOver)//如果按钮没有被按下并且鼠标移到按钮上

    {

        //绘制鼠标移到按钮上的按钮效果

        painterinfo(50,100,&painter);

    }

    //调用基类的重绘事件以显示图像文本等

    QToolButton::paintEvent(event);

}

//绘制背景渐变

void MyBtn::painterinfo(int nTopPartOpacity,int nBottomPartOpacity,QPainter *pPainter)

{

    //设置画笔

    QPen objPen(Qt::NoBrush,1);

    pPainter->setPen(objPen);

    //设置渐变画刷

    QLinearGradient objLinear(rect().topLeft(),rect().bottomLeft());

    //顶部颜色和透明度

    objLinear.setColorAt(0,QColor(150,150,150,nTopPartOpacity));

    //中间颜色和透明度

    objLinear.setColorAt(0.5,QColor(50,50,50,255));

    //底部颜色和透明度

    objLinear.setColorAt(1,QColor(100,100,100,nBottomPartOpacity));

    QBrush objBrush(objLinear);

    pPainter->setBrush(objBrush);

    //画圆角矩形

    pPainter->drawRoundedRect(rect(),5,5);

 去问一下 155手机  你就知道!

上一页  1 2 3 

Tags:Qt 实现 安全

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