从QListView拖动项目/图标时是否可以禁用拖动像素图。
我的应用程序将拖动的项目悬停在视图上方时执行自定义渲染。但是,由于我已将我的应用程序移植到Qt5,列表视图的拖动项似乎总是在拖动操作期间显示装饰角色。我想禁用它,因为我的自定义渲染更准确。
答案 0 :(得分:0)
我不确定我是否完全理解你想要的东西,但是如果你想禁用拖动像素图,你可以在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)
答案 1 :(得分:0)
您可以使用QListWidget.setMovement()
功能。该函数使用QListView::Movement movement
,而QListView.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_())