всё хорошо, но у меня в таблице нет модели.. и я отнаследовалась от QTableWidget и переопределила у него метод mimeData(). Но к сожалению, я заметила что именно переопределение этого метода всё портит... Если я его не трогаю то вижу что попадаю в функцию
bool PQModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent){
qDebug()<<data->text()<<data->data("text/plain")<<__FUNCTION__;
}
эта функция модели дерева в которое я пытаюсь сделать перетаскивание.
Если я переопределяю у своего QTableWidget метод
QMimeData* PQTableWidget::mimeData(const QList<QTableWidgetItem *> items)const
то не попадаю уже в неё и собственно само перетаскивание перестаёт работать...
Уже два дня вожусь, ну что-то не пойму что я не так пишу.. Ребята, подскажите пожалуйстаЙ
Вот код моей модели дерева:
C++ (Qt)
#include <QStandardItemModel>
class PQModel : public QStandardItemModel
{
Q_OBJECT
public:
explicit PQModel(QObject *parent = 0);
protected:
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent);
signals:
public slots:
};
C++ (Qt)
#include <QDebug>
#include <QMimeData>
#include "pqmodel.h"
PQModel::PQModel(QObject *parent) :
QStandardItemModel (parent)
{
}
bool PQModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent){
qDebug()<<data->text()<<data->data("text/plain")<<__FUNCTION__;
}
здесь собственно всё очень просто и работает как надо.
вот код моей таблицы:
C++ (Qt)
#include <QTableWidget>
class PQTableWidget : public QTableWidget
{
Q_OBJECT
public:
explicit PQTableWidget(QWidget *parent = 0);
protected:
QMimeData* mimeData(const QList<QTableWidgetItem *> items) const;
QStringList mimeTypes();
signals:
public slots:
};
C++ (Qt)
#include <QMimeData>
#include <QDataStream>
#include <QDebug>
#include <QDrag>
#include "pqtablewidget.h"
PQTableWidget::PQTableWidget(QWidget *parent) :
QTableWidget(parent)
{
}
QMimeData* PQTableWidget::mimeData(const QList<QTableWidgetItem *> items)const{
QMimeData *mimeData = new QMimeData();
QByteArray encodedData;
QDataStream stream(&encodedData, QIODevice::WriteOnly);
QTableWidgetItem *item = items.at(0);
QTableWidgetItem *newItem = this->item(item->row(),0);
qDebug()<<newItem->text();
stream<<newItem->text();
mimeData->setData("text/plain", encodedData);
QTableWidget::mimeData(items);
return mimeData;
}
QStringList PQTableWidget::mimeTypes(){
QStringList types;
types << "text/plain";
return types;
}
Как правильно переопределить метод QMimeData* PQTableWidget::mimeData(const QList<QTableWidgetItem *> items)const, чтобы всё правильно заработало?