[[qdrag]]
 
#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");
}
 
qdrag.txt · Last modified: 2017/03/13 17:13 by 147.32.8.115
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki