===== Drop - obyčejné tlačitko QPushButton ===== Drag and Drop mezi dvěma tlačítky v našem programu nepoužíváme. \\ //Ale může se hodit.// ==== Zdrojové tlačítko ==== #include #include void MainWindow::on_sourceButton_pressed() { QDrag * drag = new QDrag (this); QMimeData * data = new QMimeData; data->setText ("nejaky text"); data->setColorData(QColor ("orange")); drag->setMimeData (data); Qt::DropAction action = drag->exec ( Qt::MoveAction | Qt::CopyAction | Qt::LinkAction); if (action == Qt::MoveAction) ui->sourceButton->setText ("move"); if (action == Qt::CopyAction) ui->sourceButton->setText ("copy"); if (action == Qt::LinkAction) ui->sourceButton->setText ("link"); } ==== Cílové tlačítko ==== class MyButton : public QPushButton { public: explicit MyButton (QWidget *parent = nullptr); protected: void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event); }; #include #include #include using namespace std; MyButton::MyButton(QWidget *parent) : QPushButton(parent) { setAcceptDrops (true); // <-- important } void MyButton::dragEnterEvent(QDragEnterEvent *event) { const QMimeData * data = event->mimeData(); if (data->hasColor()) { event->acceptProposedAction(); // <-- important cout << "dragEnter" << endl; } } void MyButton::dropEvent(QDropEvent *event) { const QMimeData * data = event->mimeData(); if (data->hasColor()) { QColor color = data->colorData().value (); cout << "drop" << endl; } }