如何在PyQt5中使用QDrag拖动时显示QPushButton?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在PyQt5中使用QDrag拖动时显示QPushButton?相关的知识,希望对你有一定的参考价值。

当我拖动我的QPushButton时,它会消失直到掉落。我想在拖动时一直显示按钮。怎么做?

向下拖动我的Button,包括QDrag对象。

如果需要,很高兴分享更多代码:)

我的屏幕照片

class DraggableCodeBlock(QPushButton):
    def __init__(self, width, height, offset_left, offset_top, parent, command):

        super().__init__(parent=parent)

        self.parent = parent

        self.setText(command)

        self.show()

    def mouseMoveEvent(self, e):

        if e.buttons() != Qt.LeftButton:
            return

        mimeData = QMimeData()

        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setHotSpot(e.pos() - self.rect().topLeft())

        dropAction = drag.exec_(Qt.MoveAction)
        super(DraggableCodeBlock, self).mouseMoveEvent(e)

    def mousePressEvent(self, e):

        super().mousePressEvent(e)

        if e.button() == Qt.LeftButton or not(self.is_mobile):
            print('press')
答案

你必须设置你想通过setPixmap()显示的图像,以获得你应该使用的小部件的图像grab()

drag = QDrag(self)
drag.setPixmap(self.grab())

以上是关于如何在PyQt5中使用QDrag拖动时显示QPushButton?的主要内容,如果未能解决你的问题,请参考以下文章

Qt - 如何在拖动项目时显示图像/图标/数据?

QDrag 在拖动时被破坏

拖动时显示 UIImageView 对象(使用 UILongPressGestureRecognizer)

Xcode 9 在 Ctrl+拖动时显示菜单

Fabricjs:在拖动时显示水平和垂直位置线

在拖动 jquery 可拖动 div 时显示指南并进行捕捉