class Area : public QWidget
{
public:
void dragEnterEvent (QDragEnterEvent * event);
};
Area * area;
area = new Area;
area->setAcceptDrops(true);
area->setParent (ui->base);
QSize s = ui->base->size();
area->setGeometry(4, 4, s.width()-8, s.height()-8);
QPalette palette;
QBrush brush1 (QColor (255, 255, 155));
brush1.setStyle (Qt::SolidPattern);
palette.setBrush (QPalette::Active, QPalette::Window, brush1);
area->setPalette (palette);
area->setAutoFillBackground (true);
void Area::dragEnterEvent (QDragEnterEvent * event)
{
event->setAccepted (true);
}
toolbox (QTreeWidgetItem) ... kontextove menu ... Go to slot ... itemPressed
void MainWindow::on_toolbox_itemPressed(QTreeWidgetItem *item, int column)
{
QDrag * drag = new QDrag (this);
QMimeData * mimeData = new QMimeData ();
// mimeData->setText ("Hello");
drag->setMimeData (mimeData);
drag->exec (Qt::CopyAction);
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
#include
namespace Ui {
class MainWindow;
}
class Factory : public QTreeWidgetItem
{
public:
QWidget * create ();
};
class ButtonFactory : public Factory
{
public:
QWidget * create () { return new QPushButton; }
ButtonFactory () { setText (0, "Button"); }
};
class EditFactory : public Factory
{
public:
QWidget * create () { return new QSpinBox; }
EditFactory () { setText (0, "Spin Box"); }
};
class Area : public QWidget
{
public:
void dragEnterEvent (QDragEnterEvent * event);
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_toolbox_itemPressed(QTreeWidgetItem *item, int column);
private:
Ui::MainWindow *ui;
Area * area;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
#include
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
area = new Area;
area->setAcceptDrops(true);
area->setParent (ui->base);
QSize s = ui->base->size();
area->setGeometry(4, 4, s.width()-8, s.height()-8);
QPalette palette;
QBrush brush1 (QColor (255, 255, 155));
brush1.setStyle (Qt::SolidPattern);
palette.setBrush (QPalette::Active, QPalette::Window, brush1);
area->setPalette (palette);
area->setAutoFillBackground (true);
ui->toolbox->addTopLevelItem (new ButtonFactory);
ui->toolbox->addTopLevelItem (new EditFactory);
}
MainWindow::~MainWindow()
{
delete ui;
}
// #include
// #include
void MainWindow::on_toolbox_itemPressed (QTreeWidgetItem *item, int column)
{
QDrag * drag = new QDrag (this);
QMimeData * mimeData = new QMimeData ();
mimeData->setText ("Hello");
drag->setMimeData (mimeData);
drag->exec (Qt::CopyAction | Qt::MoveAction | Qt::LinkAction);
}
void Area::dragEnterEvent (QDragEnterEvent * event)
{
event->setAccepted (true);
}