要实现QTableView内部拖拽和QTableView相互拖拽只需要继承QTableView,然后重写
void dropEvent(QDropEvent *event);
void startDrag(Qt::DropActions supportedActions);
这两个方法即可实现相应的功能。主要代码如下图所示
#ifndef TABLEVIEW_H
#define TABLEVIEW_H
#include <QTableView>
#include <QMouseEvent>
#include <QDragEnterEvent>
#include<QByteArray>
class TableView : public QTableView
{
Q_OBJECT
public:
TableView(QWidget *parent = nullptr);
protected:
void dropEvent(QDropEvent *event);
void startDrag(Qt::DropActions supportedActions);
private:
QPixmap renderToPixmap(const QModelIndex index);
signals:
public slots:
};
#endif // TABLEVIEW_H
#include "tableview.h"
#include<QStandardItemModel>
#include<QStandardItem>
#include<QDrag>
#include<QMimeData>
#include<QWindow>
#include<QPainter>
#include<QByteArray>
#include<QDebug>
TableVi

该代码示例展示了如何在QTableView中实现拖放功能,包括内部拖动和不同QTableView之间的拖放。通过重写`dropEvent`和`startDrag`方法,实现了数据的拖放移动和更新,并使用QStandardItemModel创建了一个带有图标的示例模型。代码还包含了渲染到Pixmap的方法以供拖放操作使用。
最低0.47元/天 解锁文章
309

被折叠的 条评论
为什么被折叠?



