locked-checkbox.cpp 1001 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include <QPaintEvent>
  2. #include <QPixmap>
  3. #include <QPainter>
  4. #include "locked-checkbox.hpp"
  5. #include <util/c99defs.h>
  6. LockedCheckBox::LockedCheckBox() : QCheckBox()
  7. {
  8. lockedImage =
  9. QPixmap::fromImage(QImage(":/res/images/locked_mask.png"));
  10. unlockedImage =
  11. QPixmap::fromImage(QImage(":/res/images/unlocked_mask.png"));
  12. setMinimumSize(16, 16);
  13. setStyleSheet("outline: none;");
  14. }
  15. void LockedCheckBox::paintEvent(QPaintEvent *event)
  16. {
  17. UNUSED_PARAMETER(event);
  18. QPixmap &pixmap = isChecked() ? lockedImage : unlockedImage;
  19. QImage image(pixmap.size(), QImage::Format_ARGB32);
  20. QPainter draw(&image);
  21. draw.setCompositionMode(QPainter::CompositionMode_Source);
  22. draw.drawPixmap(0, 0, pixmap.width(), pixmap.height(), pixmap);
  23. draw.setCompositionMode(QPainter::CompositionMode_SourceIn);
  24. draw.fillRect(QRectF(QPointF(0.0f, 0.0f), pixmap.size()),
  25. palette().color(foregroundRole()));
  26. QPainter p(this);
  27. p.drawPixmap(0, 0, image.width(), image.height(),
  28. QPixmap::fromImage(image));
  29. }