Qt設計時有時需要實現動態按鈕,按鈕點擊時一個狀態,鼠標懸浮時一個狀態,離開時一個狀態,靜止時一個狀態。可以用一張png長圖,使用QSS分段截取,分配給每一個狀態。

1.調用函數
SetButtonStyle(ui->flashButton,":/images/button.png",4);//Qss切割圖片
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: 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)); }
http://blog.csdn.net/zhangquan2015/article/details/52138290
