系统自带的QPushButton 放放正正 但是远远满足不了界面设计的要求 这里做一下记录及说明
鄙人主要是用Qt 中的StyleSheet进行PushButton的设计
代码如下:
QPushButton
{
color: rgb(0, 0, 0); //字体颜色
border-image: url(:/new/prefix1/image/XX.png); //PushButton 平常状态的样子
}
QPushButton:hover
{
margin:1px; //这是鼠标指上时PushButton发生的变化 这里是缩小1px
}
QPushButton:pressed
{
margin:2 //这里是当按键按下时PushButton的变化
}
这样 通过对背景及按钮状态的设计 以及按下缩小的特性 达到一个按下的视觉效果
同样 和其他控件一样 也可以对pushbutton重写
以下是念茜大大的重写代码的格式 有兴趣的朋友可以尝试下 代码来源:http://blog.csdn.net/yiyaaixuexi/article/details/6706729
Button::Button(QWidget *parent) : QPushButton(parent)
{
//保存图片成员初始化
buttonPicture = new QPixmap();
pressPicture = new QPixmap();
releasePicture = new QPixmap();
enterPicture = new QPixmap();
leavePicture = new QPixmap();
//关闭按钮的默认显示
this -> setFlat(true);
this->setFocusPolicy(Qt::NoFocus);
//初始化flag
flag=false;
}
void Button::setButtonPicture(QPixmap pic)
{
*buttonPicture = pic;
this -> setIcon(QIcon(*buttonPicture));
}
void Button::setPressPicture(QPixmap pic)
{
*pressPicture = pic;
}
void Button::setReleasePicture(QPixmap pic)
{
*releasePicture = pic;
}
void Button::setEnterPicture(QPixmap pic)
{
*enterPicture = pic;
}
void Button::setLeavePicture(QPixmap pic)
{
*leavePicture = pic;
}
void Button::set_X_Y_width_height(int x, int y, int width, int height)
{
this -> setIconSize(QSize(width, height));
this -> setGeometry(x, y, width, height);
}
void Button::mouseDoubleClickEvent(QMouseEvent *event)
{
//null
}
void Button::mousePressEvent (QMouseEvent *event)
{
this -> setIcon (QIcon(*pressPicture));
}
void Button::mouseMoveEvent(QMouseEvent *event)
{
//null
}
void Button::mouseReleaseEvent (QMouseEvent *event)
{
this -> setIcon(QIcon(*releasePicture));
emit clicked();
}
void Button::enterEvent(QEvent *)
{
this->setIcon(QIcon(*enterPicture));
flag=true;
// this->resizeit();
}
void Button::leaveEvent(QEvent *)
{
this->setIcon(QIcon(*leavePicture));
flag=false;
}
void Button::resizeit(int w , int h)
{
this->raise();
this->resize(w,h);
this ->setIconSize(QSize(w, h));
}