QTfrontend/ui/widget/togglebutton.cpp
changeset 13243 480dcc29391c
parent 13159 6f189da00c25
equal deleted inserted replaced
13240:950186baa764 13243:480dcc29391c
    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     pmDisabled.setDevicePixelRatio(pm.devicePixelRatio());
    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     setMaximumWidth(pmChecked.width() + 6);
    40     pixOff.setDevicePixelRatio(pixOffOverlay.devicePixelRatio());
    36 
    41 
    37     painter->begin(&pmDisabled);
    42     setMaximumWidth(pixOn.width() + 6);
    38     painter->drawPixmap(pmDisabled.rect(), pm);
    43 
       
    44     painter->begin(&pixOff);
       
    45     painter->drawPixmap(pixOff.rect(), pixOffOverlay);
    39     painter->end();
    46     painter->end();
    40 
    47 
    41     setIconSize(pmDisabled.size());
    48     icoUnchecked.addPixmap(pixOff, QIcon::Normal);
    42     setIcon(pmDisabled);
    49     icoUnchecked.addPixmap(pixOff, QIcon::Disabled);
       
    50 
       
    51     setIconSize(pixOff.size());
       
    52     setIcon(icoUnchecked);
    43 
    53 
    44     connect(this, SIGNAL(toggled(bool)), this, SLOT(eventToggled(bool)));
    54     connect(this, SIGNAL(toggled(bool)), this, SLOT(eventToggled(bool)));
    45 }
    55 }
    46 
    56 
    47 ToggleButtonWidget::~ToggleButtonWidget()
    57 ToggleButtonWidget::~ToggleButtonWidget()
    48 {
    58 {
    49 }
    59 }
    50 
    60 
    51 void ToggleButtonWidget::eventToggled(bool checked)
    61 void ToggleButtonWidget::eventToggled(bool checked)
    52 {
    62 {
    53     setIcon(checked ? pmChecked : pmDisabled);
    63     setIcon(checked ? icoChecked : icoUnchecked);
    54 }
    64 }