1.实现动画效果 - void Widget::SetButtonStyle(QPushButton *button, QString imgsrc, int CutSec)
{//=========================Qss切割图片 int img_w=QPixmap(imgsrc).width(); int img_h=QPixmap(imgsrc).height(); int PicWidth = img_w/CutSec; button->setFixedSize(PicWidth,img_h); button->setStyleSheet(QString("QPushButton{border-width: 41px; border-image: url(%1) 0 0 0 %2 repeat repeat;border-width: 0px; border-radius: 0px;}") .append("QPushButton::hover{border-image: url(%1) 0 0 0 %3 repeat repeat;}") .append("QPushButton::pressed{border-image: url(%1) 0 0 0 %4 repeat repeat;}") .append("QPushButton::checked{border-image: url(%1) 0 0 0 %4 repeat repeat;}")
.append("QPushButton::disabled{border-image: url(%1) 0 0 0 %5 repeat repeat;}") .arg(imgsrc).arg(0).arg(PicWidth*1).arg(PicWidth*2).arg(PicWidth*3)); }
2 优化后的代码: - void Widget::SetButtonStyle(QPushButton *button, QString imgsrc, int CutSec)
{ //=========================Qss切割图片 int img_w = QPixmap(imgsrc).width(); int img_h = QPixmap(imgsrc).height(); int PicWidth = img_w / CutSec;
// 设置按钮的固定大小 button->setFixedSize(PicWidth, img_h);
// 设置按钮的样式 button->setStyleSheet(QString("QPushButton{border-width: 0px; border-image: url(%1) 0 0 0 %2 repeat repeat;}") .arg(imgsrc).arg(PicWidth) .append("QPushButton::hover{border-image: url(%1) 0 0 0 %3 repeat repeat;}") .arg(PicWidth * 1) .append("QPushButton::pressed{border-image: url(%1) 0 0 0 %4 repeat repeat;}") .arg(PicWidth * 2) .append("QPushButton::checked{border-image: url(%1) 0 0 0 %4 repeat repeat;}") .arg(PicWidth * 2) .append("QPushButton::disabled{border-image: url(%1) 0 0 0 %5 repeat repeat;}") .arg(PicWidth * 3)); }
|