39 const QColor newColor = QColorDialog::getColor(m_color, q_ptr, QString(), QColorDialog::ShowAlphaChannel);
40 if (!newColor.isValid() || newColor == q_ptr->color())
42 q_ptr->setColor(newColor);
43 emit q_ptr->colorChanged(m_color);
60 QBrush br(shownColor());
62 QPixmap pm(2 * pixSize, 2 * pixSize);
64 pmp.fillRect(0, 0, pixSize, pixSize, Qt::lightGray);
65 pmp.fillRect(pixSize, pixSize, pixSize, pixSize, Qt::lightGray);
66 pmp.fillRect(0, pixSize, pixSize, pixSize, Qt::darkGray);
67 pmp.fillRect(pixSize, 0, pixSize, pixSize, Qt::darkGray);
68 pmp.fillRect(0, 0, 2 * pixSize, 2 * pixSize, shownColor());
73 QRect r = pix.rect().adjusted(corr, corr, -corr, -corr);
74 p.setBrushOrigin((r.width() % pixSize + pixSize) / 2 + corr, (r.height() % pixSize + pixSize) / 2 + corr);
77 p.fillRect(r.width() / 4 + corr, r.height() / 4 + corr,
78 r.width() / 2, r.height() / 2,
79 QColor(shownColor().rgb()));
80 p.drawRect(pix.rect().adjusted(0, 0, -1, -1));
88 : QToolButton(parent), d_ptr(
new QtColorButtonPrivate)
91 d_ptr->m_dragging =
false;
92 d_ptr->m_backgroundCheckered =
true;
97 setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred));
132 QToolButton::paintEvent(event);
136 const int pixSize = 10;
137 QBrush br(d_ptr->shownColor());
138 if (d_ptr->m_backgroundCheckered) {
139 QPixmap pm(2 * pixSize, 2 * pixSize);
141 pmp.fillRect(0, 0, pixSize, pixSize, Qt::white);
142 pmp.fillRect(pixSize, pixSize, pixSize, pixSize, Qt::white);
143 pmp.fillRect(0, pixSize, pixSize, pixSize, Qt::black);
144 pmp.fillRect(pixSize, 0, pixSize, pixSize, Qt::black);
145 pmp.fillRect(0, 0, 2 * pixSize, 2 * pixSize, d_ptr->shownColor());
151 QRect r = rect().adjusted(corr, corr, -corr, -corr);
152 p.setBrushOrigin((r.width() % pixSize + pixSize) / 2 + corr, (r.height() % pixSize + pixSize) / 2 + corr);
160
161
162
163
164
166
167
168
169
171 const QColor frameColor1(0, 0, 0, 26);
172 p.setPen(frameColor1);
173 p.drawRect(r.adjusted(1, 1, -2, -2));
174 const QColor frameColor2(0, 0, 0, 51);
175 p.setPen(frameColor2);
176 p.drawRect(r.adjusted(0, 0, -1, -1));
190#ifndef QT_NO_DRAGANDDROP
191 if (event->buttons() & Qt::LeftButton &&
192 (d_ptr->m_dragStart - event->pos()).manhattanLength() > QApplication::startDragDistance()) {
193 QMimeData *mime =
new QMimeData;
194 mime->setColorData(color());
195 QDrag *drg =
new QDrag(
this);
196 drg->setMimeData(mime);
197 drg->setPixmap(d_ptr->generatePixmap());
200 drg->exec(Qt::CopyAction);
204 QToolButton::mouseMoveEvent(event);