22 ToggleButtonWidget::ToggleButtonWidget(QWidget * parent, QString img) |
22 ToggleButtonWidget::ToggleButtonWidget(QWidget * parent, QString img) |
23 : QPushButton(parent) |
23 : QPushButton(parent) |
24 { |
24 { |
25 setCheckable(true); |
25 setCheckable(true); |
26 |
26 |
27 QPixmap pm(":/res/btnDisabled.png"); |
27 QPixmap pixOffOverlay(":/res/btnDisabled.png"); |
28 QPainter * painter = new QPainter(); |
28 QPainter * painter = new QPainter(); |
29 |
29 |
30 pmChecked.load(img); |
30 QPixmap pixOn = QPixmap(img); |
31 pmDisabled.load(img); |
31 QPixmap pixOff = QPixmap(img); |
32 |
32 |
33 setMaximumWidth(pmChecked.width() + 6); |
33 // Use the same image for disabled (i.e. non-clickable) button. |
|
34 // The default would be gray which is a little bit hard on the eye. |
|
35 // The disabled state is communicated to the user by the button |
|
36 // border, which turns gray. |
|
37 icoChecked.addPixmap(pixOn, QIcon::Normal); |
|
38 icoChecked.addPixmap(pixOn, QIcon::Disabled); |
34 |
39 |
35 painter->begin(&pmDisabled); |
40 pixOff.setDevicePixelRatio(pixOffOverlay.devicePixelRatio()); |
36 painter->drawPixmap(pmDisabled.rect(), pm); |
41 |
|
42 setMaximumWidth(pixOn.width() + 6); |
|
43 |
|
44 painter->begin(&pixOff); |
|
45 painter->drawPixmap(pixOff.rect(), pixOffOverlay); |
37 painter->end(); |
46 painter->end(); |
38 |
47 |
39 setIconSize(pmDisabled.size()); |
48 icoUnchecked.addPixmap(pixOff, QIcon::Normal); |
40 setIcon(pmDisabled); |
49 icoUnchecked.addPixmap(pixOff, QIcon::Disabled); |
|
50 |
|
51 setIconSize(pixOff.size()); |
|
52 setIcon(icoUnchecked); |
41 |
53 |
42 connect(this, SIGNAL(toggled(bool)), this, SLOT(eventToggled(bool))); |
54 connect(this, SIGNAL(toggled(bool)), this, SLOT(eventToggled(bool))); |
43 } |
55 } |
44 |
56 |
45 ToggleButtonWidget::~ToggleButtonWidget() |
57 ToggleButtonWidget::~ToggleButtonWidget() |
46 { |
58 { |
47 } |
59 } |
48 |
60 |
49 void ToggleButtonWidget::eventToggled(bool checked) |
61 void ToggleButtonWidget::eventToggled(bool checked) |
50 { |
62 { |
51 setIcon(checked ? pmChecked : pmDisabled); |
63 setIcon(checked ? icoChecked : icoUnchecked); |
52 } |
64 } |