python – 用于导入和重新排列的PyQt QListView问题在一个列表中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 用于导入和重新排列的PyQt QListView问题在一个列表中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2285字,纯文字阅读大概需要4分钟。
内容图文
![python – 用于导入和重新排列的PyQt QListView问题在一个列表中](/upload/InfoBanner/zyjiaocheng/785/c185bdc162254f4a8d9ade82bcb54430.jpg)
所以我当前的listview代码只允许我将计算机上的文件拖放到我的listview中.我想要的是能够重新排列listview项目,问题是当我尝试用drop方法覆盖导入文件时没有任何反应.例如,如果拖动来自listview外部我希望它导入,如果拖动是内部的,或者更确切地说是在listview中,我希望它只是像使用InternalMove一样移动.
将其添加到我的代码中:
self.listView.setDragDropMode(QtGui.QAbstractItemView.InternalMove);
在评论这个时:
def dropEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
links = []
for url in event.mimeData().urls():
links.append(str(url.toLocalFile()))
self.emit(QtCore.SIGNAL("dropped"), links)
else:
event.ignore()
使重新排列完美无缺,但不允许我通过拖动导入文件.
因为我已经收集了以上是我的问题的原因,但我只是无法弄清楚如何解决它并同时工作,似乎它应该是一个简单的解决方案.
我不知道这是否是正确的方向,但我知道:
if event.mimeData().hasUrls:
如果来自listview之外,则返回true,如果在listview中,则返回false
您很可能会注意到上面的代码来自:
http://tech.xster.net/tips/pyqt-drag-images-into-list-widget-for-thumbnail-list/
和
http://zetcode.com/tutorials/pyqt4/dragdrop/
我知道我可以创建一个查询鼠标位置的设置并删除项目并在最近的位置重新添加它,但是当内置的InternalMove并且满足我的需求时,这似乎很麻烦.
任何帮助将不胜感激,谢谢你的时间!
解决方法:
Piotr的回答是我需要的地方的一半.我实际上在这里找到了我的问题的其余答案 – > http://sjt.is/2012/05/23/pyqt-and-dragndrop/
我只是将listview定义为:
mylist = TestListView(self)
然后使用下面的代码作为类定义:
class TestListView(QtGui.QListWidget):
def __init__(self, parent):
super(TestListView, self).__init__(parent)
self.setAcceptDrops(True)
self.setIconSize(QtCore.QSize(100, 100))
self.itemClicked.connect(self.on_item_clicked)
self.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
def dragEnterEvent(self, event):
if event.mimeData().hasUrls:
event.acceptProposedAction()
else:
super(TestListView, self).dragEnterEvent(event)
def dragMoveEvent(self, event):
super(TestListView, self).dragMoveEvent(event)
def dropEvent(self, event):
if event.mimeData().hasUrls():
links = []
for url in event.mimeData().urls():
links.append(str(url.toLocalFile()))
self.emit(QtCore.SIGNAL("dropped"), links)
event.acceptProposedAction()
else:
super(TestListView,self).dropEvent(event)
删除新文件时,它会向连接到列表视图的函数发出信号.删除旧文件时??会移动它.谢谢您的帮助!
内容总结
以上是互联网集市为您收集整理的python – 用于导入和重新排列的PyQt QListView问题在一个列表中全部内容,希望文章能够帮你解决python – 用于导入和重新排列的PyQt QListView问题在一个列表中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。