#ifndef MYLINEEDIT_H #define MYLINEEDIT_H #include class MyLineEdit : public QLineEdit { public: MyLineEdit (QWidget * parent = NULL); protected: void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event); }; #endif // MYLINEEDIT_H #include "mylineedit.h" MyLineEdit::MyLineEdit (QWidget *parent) : QLineEdit (parent) { setAcceptDrops (true); } #include #include void MyLineEdit::dragEnterEvent(QDragEnterEvent *event) { const QMimeData * data = event->mimeData(); if (data->hasText()) event->setAccepted (true); } void MyLineEdit::dropEvent(QDropEvent *event) { const QMimeData * data = event->mimeData(); if (data->hasText()) { QString s = data->text(); this->setText(s); } } #ifndef MYTREEWIDGET_H #define MYTREEWIDGET_H #include class MyTreeWidget : public QTreeWidget { public: MyTreeWidget(QWidget * parent = NULL); protected: QStringList mimeTypes() const; bool dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction action); // QWidget interface protected: // void dragEnterEvent(QDragEnterEvent *event); }; #endif // MYTREEWIDGET_H #include "mytreewidget.h" MyTreeWidget::MyTreeWidget(QWidget *parent) : QTreeWidget (parent) { setAcceptDrops (true); } #include #include QStringList MyTreeWidget::mimeTypes() const { // return QStringList () << "text/plain" << "application/x-color"; QStringList list; list.append ("text/plain"); list.append ("application/x-color"); return list; } bool MyTreeWidget::dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction action) { if (data->hasText()) { parent->setText(0, data->text()); } if (data->hasColor()) { QColor color = qvariant_cast (data->colorData()); parent->setForeground (0, color); } return true; } #ifndef MAINWINDOW_H #define MAINWINDOW_H #include namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_pushButton_pressed(); void on_action_Test_triggered(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H #include "mainwindow.h" #include "ui_mainwindow.h" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QTreeWidgetItem * item = new QTreeWidgetItem; item->setText (0, "root"); ui->treeWidget->addTopLevelItem(item); } MainWindow::~MainWindow() { delete ui; } #include #include #include #include void MainWindow::on_pushButton_pressed() { QDrag * drag = new QDrag (this); QMimeData * data = new QMimeData; data->setText ("Hello"); data->setColorData (QColor("orange")); drag->setMimeData (data); drag->start (); } void MainWindow::on_action_Test_triggered() { QTextCursor cursor = ui->textEdit->textCursor(); QTextCharFormat fmt = cursor.charFormat(); fmt.setForeground (QColor ("red")); fmt.setBackground (QColor ("yellow")); cursor.setCharFormat(fmt); cursor.insertText("abc"); fmt.setForeground (QColor ("blue")); fmt.setBackground (QColor ("yellow").lighter(180)); fmt.setFontPointSize(20); cursor.setCharFormat(fmt); cursor.insertText("klm"); // ui->textEdit->append ("abc"); }