1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > qt禁止拖动_Qt如何实现拖拽功能?

qt禁止拖动_Qt如何实现拖拽功能?

时间:2024-08-12 01:48:23

相关推荐

qt禁止拖动_Qt如何实现拖拽功能?

如上图所示,如何实现通过拖拽的方式交换两个按钮的文本?

严格的说应该叫拖放方式,它包含了拖动和放置两个部分。拖动通过drag实现,放下通过dropEvent事件实现。该例子有点特殊就是拖动和放下的对象都是按钮,所以拖动和放下都是在同一个类中实现。具体实现步骤如下:

从QPushButton类派生一个类,用以重写事件。

需要重写的事件有mouseMoveEvent,在该事件中实现拖动的操作,dropEvent事件中实现放下的操作。而dragEnterEvent事件在dropEvent之前执行,为了让拖拽事件往下传递,所以也需要重写该事件。

2.让按钮接收放下事件

必须调用setAcceptDrops为true,否则不会调用dragEnterEvent和dropEvent。

3.创建QDrag对象

在鼠标移动的事件中创建QDrag对象,这样更符合操作的习惯。创建QDrag对象后要为它设置一个QMimeData,这里设置一个文本类型的数据,内容为当前按钮的文本。最后调用QDrag的exec函数,这样拖动部分的功能就实现了。

4.实现放下功能

在dropEvent事件中获取拖拽事件的数据,event->mimeData()返回的就是QMimeData。调用this->setText(event->mimeData()->text())实现了将当前按钮的文本设置为拖拽源对象的文本。

event->source()可以获取事件的源对象,在此例中源和目标对象都是DragButton。

5.重写dragEnterEvent

为了让事件传递,调用event->accept()。自此DragButton就完成了。

6.最后在界面中创建几个DragButton对象测试一下即可。

测试环境:windows 10 Qt5.9

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。