===== 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;
}
}