【问题标题】:Disabling the drag image in QListView禁用 QListView 中的拖动图像
【发布时间】:2014-09-04 22:38:44
【问题描述】:

从 QListView 拖动项目/图标时是否可以禁用拖动像素图。

我的应用程序在将拖动项悬停在视图上方时执行自定义呈现。但是,由于我已将我的应用程序移植到 Qt5,因此列表视图的拖动项似乎总是在拖动操作期间显示装饰角色。我想禁用它,因为我的自定义渲染更准确。

【问题讨论】:

    标签: qt drag qlistview


    【解决方案1】:

    我不确定我是否完全理解你想要什么,但如果你想禁用拖动像素图,你可以在 startDrag 方法中设置一个空像素图,​​即

    drag = QtGui.QDrag(self)
    # Create empty mimedata just to initilize the Qdrag.
    mimeData = QtCore.QMimeData()
    mimeData.setData("text/plain", "")
    drag.setMimeData(mimeData)
    
    pixmap = QtGui.QPixmap()
    # Empty pixmap. No drag icon
    drag.setPixmap(pixmap)
    ...
    drag.exec_(QtCore.Qt.MoveAction)
    

    【讨论】:

    • 谢谢。这确实是手动启动拖动操作时的设置方法。然而,当使用列表视图时,它会默认启动拖动操作(在 QIconModeViewBase::filterStartDrag 中)。在那里它似乎总是设置像素图。有没有办法改变这个列表视图的行为?
    【解决方案2】:

    您可以使用QListWidget.setMovement() 函数。该函数采用QListView::Movement movementQListView.Static 禁用图标的移动。

    下面是 pyqt5 的代码示例:

    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    import sys
    
    class DisableMoving(QWidget):
        def __init__(self):
            super().__init__()
    
            self.list_widget = QListWidget(self)
            self.list_widget.setViewMode(QListView.IconMode)
            self.list_widget.setFlow((QListView.LeftToRight))
            self.list_widget.setResizeMode(QListView.Adjust)
            # setMovement
            self.list_widget.setMovement(QListView.Static)
    
            item_1 = QListWidgetItem()
            item_1.setIcon(QIcon('1.jpg'))
            self.list_widget.addItem(item_1)
    
            item_2 = QListWidgetItem()
            item_2.setIcon(QIcon('2.jpg'))
            self.list_widget.addItem(item_2)
    
            self.setGeometry(300, 300, 800, 600)
            self.setWindowTitle('Disable icon moving')
            self.show()
    
    
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        ex = DisableMoving()
        sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多