QT5 drag and drop
来源:互联网 发布:短信软件接口 编辑:程序博客网 时间:2024/05/01 09:56
最近写结合编辑器QT5与cocos写编辑器,遇到了要拖拽的问题,拖拽控件需要附加数据。简要说明下流程,参考QT Creator。
示例参考:
功能实现:
1.先扩展两个控件,一个是QTreeWidget(作为拖拽条目将要放置的控件),一个是QListWidget(作为拖拽条目开始拖拽的地方),即从listwidget中将item拖拽到treewidget中,在编辑器中将QTreeWidget提升为QTreeWidgetEx,将QListWidget提升为QListWidgetEx。这两个控件最终都继承自QAbstractItemView。
2.重载QAbstractItemView中的方法。
a.QListWidgetEx 重载void QListWidgetEx::startDrag(Qt::DropActions /*supportedActions*/){QListWidgetItem *item = currentItem();QByteArray itemData;QDataStream dataStream(&itemData, QIODevice::WriteOnly);dataStream << int(1);QMimeData *mimeData = new QMimeData;mimeData->setText("test");QDrag *drag = new QDrag(this);drag->setMimeData(mimeData);mimeData->setData("test_signal", itemData);//QMimeData 请参加其他文章QPixmap pixmap(QSize(16, 16));pixmap.load("test.jpg");drag->setHotSpot(QPoint(0, 0));drag->setPixmap(pixmap);if (drag->exec(Qt::MoveAction) == Qt::MoveAction){//delete takeItem(row(item));}}b.QTreeWidgetEx重载void QTreeWidgetEx::dragEnterEvent(QDragEnterEvent *event){if (event->mimeData()->hasFormat("test_signal"))event->accept();elseevent->ignore();}void QTreeWidgetEx::dragMoveEvent(QDragMoveEvent *event){if (event->mimeData()->hasFormat("test_signal")) < / span >{event->setDropAction(Qt::MoveAction);event->accept();}elseevent->ignore();}void QTreeWidgetEx::dropEvent(QDropEvent *event){if (event->mimeData()->hasFormat("test_signal")){//获取数据QByteArray ItemData = event->mimeData()->data("test_signal");QDataStream dataStream(&ItemDat, QIODevice::ReadOnly);int testid = 0;dataStream >> testid;/获取界面上控件QModelIndex currentId = indexAt(event->pos());if (currentId.isValid()){//添加界面节点QTreeWidgetItem * pParentItem = itemFromIndex(currentId);QTreeWidgetItem * pItem = new QTreeWidgetItem(pParentItem);}event->setDropAction(Qt::MoveAction);event->accept();}elseevent->ignore();}
0 0
- QT5 drag and drop
- Drag and Drop
- 学习drag and drop
- 关于drag and drop
- html5 Drag and drop
- Ajax Drag and Drop
- HTML5 Drag and Drop
- drag and drop学习
- android - Drag and Drop
- html5 Drag and Drop
- Qt Drag and Drop
- drag and drop(拖拽)
- Drag And Drop 进阶
- drag and drop 事件
- Drag and drop with Javascript
- Drag and Drop between Controls
- Drag And Drop In Javascript
- About the drag-and-drop
- poker网络 -2
- Java学习的级别
- How to Get the Frequency Table of a Categorical Variable as a Data Frame in R
- Linux在C语言下的时区设置与修改(一)
- OC语言(二)
- QT5 drag and drop
- Oracle的3种分页技术及性能比较
- js中的常用函数
- 有高手看到下面的程序求解答,为什么最后出来的都是0啊
- Xcode概览:构建用户界面
- 用MFC编写的程序在别人电脑上显示时窗口界面出现问题
- hdu4651 4658 整数拆分 五边形数定理
- 浅析总结 Java 内部类的一些使用与梳理
- Nim游戏博弈(收集完全版)