-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchangeskinwidget.cpp
More file actions
62 lines (57 loc) · 2.15 KB
/
Copy pathchangeskinwidget.cpp
File metadata and controls
62 lines (57 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "changeskinwidget.h"
#include <qsignalmapper.h>
#include <QGridLayout>
#include <QPushButton>
#include <QLabel>
#include <QPainter>
changeSkinWidget::changeSkinWidget(QString picName,QWidget *parent) :
QWidget(parent)
{
bgPicName=picName;
QSignalMapper *signalMapper=new QSignalMapper(this);
QStringList bkPicName;
bkPicName<<":/img/skin/angryBird.jpg"<<":/img/skin/blackPoint.jpg"<<":/img/skin/blueSky.jpg"<<
":/img/skin/classic.jpg"<<":/img/skin/greenWorld.jpg"<<":/img/skin/oldWood.jpg"<<
":/img/skin/pinkLove.jpg"<<":/img/skin/redThunder.jpg"<<":/img/skin/sixYears.jpg";
QStringList tip;
tip<<tr("愤怒的小鸟")<<tr("优雅爵士")<<tr("蓝色天空")<<tr("经典皮肤")<<
tr("青青世界")<<tr("古典木纹")<<tr("粉色之恋")<<tr("红色惊雷")<<tr("卫士六周年");
QGridLayout *gridLayout=new QGridLayout;
gridLayout->setSpacing(0);
int r=0,c=0;
for(int i=0;i<9;i++)
{
QPushButton *btn=new QPushButton;
// btn->setFlat(true);
QIcon icon(bkPicName[i].left(bkPicName[i].indexOf("."))+"Small.jpg");
btn->setIcon(icon);
btn->setIconSize(QSize(97,62));
btn->setToolTip(tip[i]);
connect(btn,SIGNAL(clicked()),signalMapper,SLOT(map()));
signalMapper->setMapping(btn,bkPicName[i]);
if(i%3==0)
{
r++;
c=0;
}
gridLayout->addWidget(btn,r,c++);
}
connect(signalMapper,SIGNAL(mapped(QString)),this,SIGNAL(changeSkin(QString)));
connect(signalMapper,SIGNAL(mapped(QString)),this,SLOT(setSkin(QString)));
QVBoxLayout *mainLayout=new QVBoxLayout;
mainLayout->addWidget(new QLabel(tr("更换皮肤")),0,Qt::AlignHCenter);
mainLayout->addLayout(gridLayout);
setLayout(mainLayout);
setWindowFlags(Qt::Popup);
}
void changeSkinWidget::paintEvent(QPaintEvent *){
QPainter painter(this);
painter.setBrush(QBrush(QPixmap(bgPicName)));
painter.setRenderHints(QPainter::Antialiasing,true);
painter.setPen(Qt::black);
painter.drawRect(rect());
}
void changeSkinWidget::setSkin(QString picName){
bgPicName=picName;
update();
}