#ifndef MYEDIT_H #define MYEDIT_H #include #include class MyEdit : public QPlainTextEdit { // Q_OBJECT public: explicit MyEdit (QWidget *parent = nullptr); protected: void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event); }; #endif // MYEDIT_H #include "myedit.h" MyEdit::MyEdit(QWidget *parent) : QPlainTextEdit (parent) { } void MyEdit::dragEnterEvent(QDragEnterEvent *event) { event->setAccepted(true); } void MyEdit::dropEvent(QDropEvent *event) { } #ifndef MYBUTTON_H #define MYBUTTON_H #include #include class MyButton : public QToolButton { Q_OBJECT public: explicit MyButton (QWidget *parent = nullptr); signals: public slots: // QWidget interface protected: void mousePressEvent(QMouseEvent *event); }; #endif // MYBUTTON_H #include "mybutton.h" MyButton::MyButton(QWidget *parent) : QToolButton(parent) { } #include #include void MyButton::mousePressEvent(QMouseEvent *event) { setText ("press"); QMimeData * data = new QMimeData; data->setText("nejaky text"); QDrag * drag = new QDrag (this); drag->setMimeData(data); drag->start(); } #include "mainwindow.h" #include "ui_mainwindow.h" #include "mybutton.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); MyButton * b = new MyButton; b->setText("my button"); ui->mainToolBar->addWidget(b); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_action_Quit_triggered() { close (); } #include void MainWindow::on_action_Create_triggered() { QToolButton * b = new QToolButton; b->setText("button"); ui->mainToolBar->addWidget(b); QTreeWidgetItem * t = new QTreeWidgetItem; t->setText (0, "abc"); ui->treeWidget->addTopLevelItem(t); QTreeWidgetItem * u = new QTreeWidgetItem; u->setText (0, "def"); u->setToolTip (0, "nejaky text"); u->setForeground(0, QColor ("red")); t->addChild(u); t->setExpanded(true); }