void tst_QMimeData::colorData() const
{
    QMimeData mimeData;
    QColor red = Qt::red;
    QColor blue = Qt::blue;

    // set, verify
    mimeData.setColorData(red);
    QVERIFY(mimeData.hasColor());
    QCOMPARE(qvariant_cast<QColor>(mimeData.colorData()), red);

    // change, verify
    mimeData.setColorData(QColor(Qt::blue));
    QVERIFY(mimeData.hasColor());
    QCOMPARE(qvariant_cast<QColor>(mimeData.colorData()), blue);
}
Пример #2
0
void KisColorPatches::mouseMoveEvent(QMouseEvent *event)
{
    event->ignore();
    KisColorSelectorBase::mouseMoveEvent(event);
    if(event->isAccepted())
        return;

    if (!(event->buttons() & Qt::LeftButton))
        return;
    if ((event->pos() - m_dragStartPos).manhattanLength()
         < QApplication::startDragDistance())
        return;

    KoColor koColor;
    if(!colorAt(m_dragStartPos, &koColor))
        return;

    QDrag *drag = new QDrag(this);
    QMimeData *mimeData = new QMimeData;

    QColor color = koColor.toQColor();
    mimeData->setColorData(color);
    mimeData->setText(color.name());
    drag->setMimeData(mimeData);

    drag->exec(Qt::CopyAction);

    event->accept();
}
Пример #3
0
 void Peg::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
     if (QLineF(event->screenPos(), event->buttonDownScreenPos(Qt::LeftButton))
         .length() < QApplication::startDragDistance()) {
         return;
     }
     dragged = true;
          QDrag *drag = new QDrag(event->widget());
          QMimeData *mime = new QMimeData;
          drag->setMimeData(mime);
              mime->setColorData(color);
              mime->setText(QString("#%1%2%3")
                            .arg(color.red(), 2, 16, QLatin1Char('0'))
                            .arg(color.green(), 2, 16, QLatin1Char('0'))
                            .arg(color.blue(), 2, 16, QLatin1Char('0')));

              QPixmap pixmap(34, 34);
              pixmap.fill(Qt::white);

              QPainter painter(&pixmap);
              painter.translate(15, 15);
              painter.setRenderHint(QPainter::Antialiasing);
              paint(&painter, 0, 0);
              painter.end();

              pixmap.setMask(pixmap.createHeuristicMask());

              drag->setPixmap(pixmap);
              drag->setHotSpot(QPoint(15, 20));


          drag->exec();
          setCursor(Qt::OpenHandCursor);
          dragged = false;
 }
Пример #4
0
void DualColorButton::mouseMoveEvent(QMouseEvent *event)
{
	if(dragSource_ != NODRAG && (event->buttons() & Qt::LeftButton) &&
			(event->pos() - dragStart_).manhattanLength()
		> QApplication::startDragDistance())
	{
		QDrag *drag = new QDrag(this);

		QMimeData *mimedata = new QMimeData;
		const QColor color = (dragSource_ == FOREGROUND)?foreground_:background_;
		mimedata->setColorData(color);

		drag->setMimeData(mimedata);
		drag->start(Qt::CopyAction);
	}
	// Higlight clickable areas
	QRectF fgr = foregroundRect();
	QRectF bgr = backgroundRect();
	if(fgr.contains(event->pos()))
		hilite_ = 1;
	else if(bgr.contains(event->pos()))
		hilite_ = 2;
	else if(event->pos().x() > fgr.right() && event->pos().y() < bgr.top())
		hilite_ = 3;
	else if(event->pos().x() < bgr.left() && event->pos().y() > fgr.bottom())
		hilite_ = 4;
	else
		hilite_ = 0;
	update();
}
Пример #5
0
void DraggablePiece::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    QMimeData *data = new QMimeData;
	QVariant variant = QVariant::fromValue((int)Qt::green);
	data->setColorData(variant);

	QDrag *drag = new QDrag((QObject*)event->widget());
    drag->setMimeData(data);
    drag->start();
}
Пример #6
0
//! [5]
void ColorItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    if (QLineF(event->screenPos(), event->buttonDownScreenPos(Qt::LeftButton))
        .length() < QApplication::startDragDistance()) {
        return;
    }

    QDrag *drag = new QDrag(event->widget());
    QMimeData *mime = new QMimeData;
    drag->setMimeData(mime);
//! [5]

//! [6]
    static int n = 0;
    if (n++ > 2 && (qrand() % 3) == 0) {
        QImage image(":/images/head.png");
        mime->setImageData(image);

        drag->setPixmap(QPixmap::fromImage(image).scaled(30, 40));
        drag->setHotSpot(QPoint(15, 30));
//! [6]
//! [7]
    } else {
        mime->setColorData(color);
        mime->setText(QString("#%1%2%3")
                      .arg(color.red(), 2, 16, QLatin1Char('0'))
                      .arg(color.green(), 2, 16, QLatin1Char('0'))
                      .arg(color.blue(), 2, 16, QLatin1Char('0')));

        QPixmap pixmap(34, 34);
        pixmap.fill(Qt::white);

        QPainter painter(&pixmap);
        painter.translate(15, 15);
        painter.setRenderHint(QPainter::Antialiasing);
        paint(&painter, 0, 0);
        painter.end();

        pixmap.setMask(pixmap.createHeuristicMask());

        drag->setPixmap(pixmap);
        drag->setHotSpot(QPoint(15, 20));
    }
//! [7]

//! [8]
    drag->exec();
    setCursor(Qt::OpenHandCursor);
}
Пример #7
0
void VColorButton::mouseMoveEvent(QMouseEvent *e)
{
    if (!mousepressed)
        return;

    if ((presspos - e->pos()).manhattanLength() > QApplication::startDragDistance()) {
        mousepressed = false;
        setDown(false);

        QDrag *drag = new QDrag(this);
        QMimeData *data = new QMimeData;
        data->setColorData(color());
        drag->setMimeData(data);
        drag->start(Qt::CopyAction);
    }
}
Пример #8
0
void PaletteGrid::mouseMoveEvent(QMouseEvent* event)
{
    VoxelFile* voxel = window->get_voxel();
    if (!voxel)
        return;
    if (!(event->buttons() & Qt::LeftButton))
        return;
     if ((event->pos() - drag_start).manhattanLength() < QApplication::startDragDistance())
         return;
    QDrag* drag = new QDrag(this);
    QMimeData* mimeData = new QMimeData;
    RGBColor& col = global_palette[palette_index];
    QColor col2(col.r, col.g, col.b);
    mimeData->setColorData(col2);
    drag->setMimeData(mimeData);
    //Qt::DropAction dropAction = drag->exec(Qt::CopyAction);
}
Пример #9
0
void QtColorButton::mouseMoveEvent(QMouseEvent *event)
{
#ifndef QT_NO_DRAGANDDROP
    if (event->buttons() & Qt::LeftButton &&
        (d_ptr->m_dragStart - event->pos()).manhattanLength() > QApplication::startDragDistance()) {
        QMimeData *mime = new QMimeData;
        mime->setColorData(color());
        QDrag *drg = new QDrag(this);
        drg->setMimeData(mime);
        drg->setPixmap(d_ptr->generatePixmap());
        setDown(false);
        event->accept();
        drg->start();
        return;
    }
#endif
    QToolButton::mouseMoveEvent(event);
}
Пример #10
0
//! [5]
void ColorItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
	QPoint pointStart = event->screenPos();
	QPoint pointEnd = event->buttonDownScreenPos(Qt::LeftButton);
	QLineF lineStarEnd(pointStart, pointEnd);
	qreal nLineLength = lineStarEnd.length();
	qreal nLineMinLength = QApplication::startDragDistance();

	//if (QLineF(event->screenPos(), event->buttonDownScreenPos(Qt::LeftButton)).length() < QApplication::startDragDistance())
	if (nLineLength < nLineMinLength)
	{
		return;
	}

	QDrag* drag = new QDrag(event->widget());
	QMimeData* mime = new QMimeData();
	QString strText;
	strText = QString("#%1%2%3").arg(m_nColor.red(), 2, 16, QLatin1Char('0'))
		.arg(m_nColor.green(), 2, 16, QLatin1Char('0'))
		.arg(m_nColor.blue(), 2, 16, QLatin1Char('0'));


	drag->setMimeData(mime);

	mime->setColorData(m_nColor);
	mime->setText(strText);

	QPixmap pixmap(34, 34);
	pixmap.fill(Qt::white);

	QPainter painter(&pixmap);
	painter.translate(15, 15);
	painter.setRenderHint(QPainter::Antialiasing);
	this->paint(&painter, 0, 0);
	painter.end();

	pixmap.setMask(pixmap.createHeuristicMask());

	drag->setPixmap(pixmap);
	drag->setHotSpot(QPoint(15, 20));

	drag->exec();
	setCursor(Qt::OpenHandCursor);
}
void tst_QMimeData::hasColor() const
{
    QMimeData mimeData;

    // initial state
    QVERIFY(mimeData.hasColor() == false);

    // set, verify
    mimeData.setColorData(QColor(Qt::red));
    QVERIFY(mimeData.hasColor());

    // clear, verify
    mimeData.clear();
    QVERIFY(mimeData.hasColor() == false);

    // set something else, verify
    mimeData.setData("text/plain", "pirates");
    QVERIFY(mimeData.hasColor() == false);
}
Пример #12
0
void ColorView::mouseMoveEvent(QMouseEvent *e)
{
    if (e->buttons() & Qt::LeftButton) {
        if ((e->pos() - dragStartPos_).manhattanLength() >= QApplication::startDragDistance()) {
            QDrag *drag = new QDrag(this);
            QMimeData *mimeData = new QMimeData;

            mimeData->setColorData(value_);
            drag->setMimeData(mimeData);

            QPixmap pix(20, 20);
            auto size = pix.size();
            {
                QPainter p(&pix);

                for (int x = 0; x < size.width(); x += 5) {
                    for (int y = 0; y < size.height(); y += 5) {
                        p.fillRect(x, y, 5, 5, ((x + y) / 5 & 1) ? QColor(255, 255, 255) : QColor(192, 192, 192));
                    }
                }

                p.fillRect(0, 0, size.width(), size.height(), value_);
                auto v2 = value_;
                v2.setAlphaF(1.f);
                p.fillRect(0, 0, size.width() / 2, size.height(), v2);

                p.setPen(QColor(0, 0, 0));
                p.drawRect(0, 0, size.width() - 1, size.height() - 1);
                p.setPen(QColor(255, 255, 255));
                p.drawRect(1, 1, size.width() - 3, size.height() - 3);
            }

            drag->setPixmap(pix);
            drag->exec(Qt::CopyAction | Qt::MoveAction);
            return;
        }
    }

    QAbstractButton::mouseMoveEvent(e);
}
Пример #13
0
/*
 * Draws a rectangle with the buttons color as the mouse is dragged.
 */
void DColorButton::mouseMoveEvent(QMouseEvent* e)
{
	QAbstractButton::mouseMoveEvent( e );

	if ((e->pos() - m_position).manhattanLength() <  QApplication::startDragDistance())
		return;

	QDrag *drag = new QDrag( this );
	QPixmap pix( 25, 25 );
	pix.fill( m_color );
		
	QPainter painter( &pix );
	painter.drawRect( 0, 0, pix.width(), pix.height() );
	painter.end();
	
	QMimeData *mimeData = new QMimeData;
	mimeData->setColorData(m_color);
		
	drag->setMimeData(mimeData);
	drag->setPixmap( pix );
		
	Qt::DropAction dropAction = drag->start(Qt::MoveAction);

}