#ifndef MYLINEEDIT_H
#define MYLINEEDIT_H
#include <QLineEdit>
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 <QMimeData>
#include <QDragEnterEvent>
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 <QTreeWidget>
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 <QDragEnterEvent>
#include <QMimeData>
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 <QColor> (data->colorData());
parent->setForeground (0, color);
}
return true;
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
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 <QTreeWidgetItem>
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 <QDrag>
#include <QMimeData>
#include <QTextCursor>
#include <QTextCharFormat>
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");
}