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