Qt之实现360安全卫士主界面(三)
2012-03-26 11:37:43 来源:WEB开发网二、工具栏按钮效果设置
工具栏按钮继承于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标志位
更多精彩
赞助商链接