#include #include "BasicColorItem.h" #define ITEM_EDGE_LENGTH 25 BasicColorItem::BasicColorItem(const QColor &c, QWidget *parent) : QLabel(parent) , m_bMouseIn(false) { setFixedSize(ITEM_EDGE_LENGTH, ITEM_EDGE_LENGTH); setColor(c); } BasicColorItem::~BasicColorItem() { } QColor BasicColorItem::getColor() { return m_color; } void BasicColorItem::paintEvent(QPaintEvent *ev) { QLabel::paintEvent(ev); if (m_bMouseIn) { QPainter painter(this); painter.setCompositionMode(QPainter::CompositionMode_Source); painter.setPen(QPen(Qt::white, 3)); painter.drawRect(1, 1, ITEM_EDGE_LENGTH - 3, ITEM_EDGE_LENGTH - 3); } } void BasicColorItem::mousePressEvent(QMouseEvent *) { emit itemClickedSignal(m_color); } void BasicColorItem::enterEvent(QEvent *) { m_bMouseIn = true; update(); } void BasicColorItem::leaveEvent(QEvent *) { m_bMouseIn = false; update(); } void BasicColorItem::setColor(const QColor &c) { if(c==Qt::transparent) { QImage itemImg = QImage(ITEM_EDGE_LENGTH, ITEM_EDGE_LENGTH, QImage::Format_RGB32); QPainter painter(&itemImg); painter.setRenderHint(QPainter::Antialiasing); painter.setCompositionMode(QPainter::CompositionMode_Source); painter.drawImage(0, 0, itemImg); QPen pen; painter.setBrush(Qt::white); painter.drawRect(0, 0, width(), height()); //pen.setStyle(Qt::DashLine); pen.setColor(Qt::red); // 设置画笔为黄色 painter.setPen(pen); painter.drawLine(0,0,width()-1,height()-1); painter.end(); this->setPixmap(QPixmap::fromImage(itemImg)); update(); } else { QImage itemImg = QImage(ITEM_EDGE_LENGTH, ITEM_EDGE_LENGTH, QImage::Format_ARGB32); QPainter painter(&itemImg); painter.setRenderHint(QPainter::Antialiasing); painter.setCompositionMode(QPainter::CompositionMode_Source); painter.drawImage(0, 0, itemImg); painter.setPen(Qt::NoPen); painter.setBrush(c); painter.drawRect(0, 0, width(), height()); painter.end(); this->setPixmap(QPixmap::fromImage(itemImg)); update(); } m_color = c; }