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 <QDrag>
#include <QMimeData>
 
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 <QMimeData>
#include <QDragEnterEvent>
 
#include <iostream>
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 <QColor> ();
       cout << "drop" << endl;
    }
}
 
qt/graphics_button_drop.txt · Last modified: 2020/09/30 11:58 by 88.103.111.44
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki