- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有课MyListModel
,它继承自使用 QListView 或自定义子类显示的 QAbstractListModel。我希望列表中的每个项目都是可编辑的,并且用户能够拖放以重新排列项目的顺序(我实际上并不相信 QListView 是要走的路,但它看起来像不会有太多麻烦。哦,好吧。)。
这些项目是可拖动的,但会显示一个带叉的小圆圈,这意味着我不能在那里放任何东西。
我尝试了 this question 中建议的所有内容,似乎没有任何效果。 dropMimeData
函数永远不会被调用,尽管 mimeData
似乎产生了我的占位符数据。
我不认为我在其他类(class)中做错了什么,所以我只是将模型类(class)放在这篇文章中。间距可能有点时髦。
感谢您的任何帮助。
我的模型:
class MyListModel(QtCore.QAbstractListModel):
def __init__(self, parent, items=None):
super(self.__class__, self).__init__()
print "initiating MyListModel"
self.parent = parent
self._items = list()
for thing in items:
self._items.append(thing)
self.setSupportedDragActions(QtCore.Qt.MoveAction)
def rowCount(self, parent = QtCore.QModelIndex()):
return len(self._items)
def data(self, index, role = QtCore.Qt.DisplayRole):
if (role == QtCore.Qt.DisplayRole) or (role == QtCore.Qt.EditRole):
return self._items[index.row()].name
else:
return
def setData(self, index, value, role=QtCore.Qt.EditRole):
print "Setting Data", value, "at", index.row(),
if role == QtCore.Qt.EditRole:
print "EditRole"
self._items[index.row()].name = value
return True
elif role == QtCore.Qt.DisplayRole:
print "DisplayRole"
print role
return False
else:
print "other"
print role
return False
def flags(self, index):
return (QtCore.Qt.ItemIsEnabled |
QtCore.Qt.ItemIsSelectable |
QtCore.Qt.ItemIsEditable |
QtCore.Qt.ItemIsDragEnabled |
QtCore.Qt.ItemIsDropEnabled)
def insertRows(self, row, count, parent):
print "insertRows"
self.beginInsertRows(parent, row, (row + (count - 1)))
#self._items.insert(row, object)
self.endInsertRows()
return True
def supportedDropActions(self):
print "supportedDrop"
return (QtCore.Qt.MoveAction | QtCore.Qt.CopyAction)
def supportedDragActions(self):
print "supportedDraw"
return (QtCore.Qt.MoveAction | QtCore.Qt.CopyAction)
def mimeData(self, indexes):
print "mimeData at (", indexes[0].row(), ",", indexes[0].column(), ")",
self.old_index = indexes[0].row()
old_stuff = pickle.dumps(self._items[indexes[0].row()])
print type(old_stuff)
mimeData = QtCore.QMimeData()
mimeData.setText(old_stuff)
return mimeData
def dropMimeData(self, data, action, row, column, parent):
print "dropMimeData"
'''
self.beginInsertRows(parentIndex, row, row)
if action == QtCore.Qt.IgnoreAction:
return True
if data.hasText():
print data
return False
'''
def mimeTypes(self):
print 'mimeTypes'
return list("text/plain")
最佳答案
在 mimeData
方法,尝试更改mimeData = QtCore.QMimeData()
至mimeData = super(MyListModel, self).mimeData(indexes)
.
我认为 mimeData
的生命周期存在问题对象,如果您自己创建它,它会很快被删除。如果您执行上述操作,它似乎具有正确的生命周期。不过,这只是一个猜测。
关于qt - 重新排序项目 QAbstractListModel -- dropMimeData 从未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8662007/
我想测试我已经实现的一些 QAbstractListModels,使用 Qt 实验室的 ModelTest 还是使用 QTestLib 进行我自己的单元测试更好。也有人可以指出 ModelTest 实
我正在使用 QAbstractListModel 将数据公开给 QML ListView。除此之外还使用了 QML SectionScroller,它使用 get 和 data 函数。 滚动一段时间后
我在尝试使用 Qt/QML 为我的应用程序开发数据模型时遇到问题。我已经使用了一个 QAbstractListModel 来将海关数据模型从 C++ 传递到 QML,它对简单模型(例如基于字符串和 b
我从 QAbstractListModel 派生了一个类 FeedItemViewModel。我已经实现了一种在列表模型中添加项目的方法,但我不知道如何更新具有特定 ID 的项目。 代码如下: voi
我有一个 QAbstractListModel 的子类,并用 GridView 附加了这个模型子类。当我从我的子类中删除行时,GridView 会更新,但是当我在模型中插入行时,GridView 不会
我有一个从 QAbstractListModel 派生的自定义模型,它暴露给 QML。我需要支持添加新项目和删除现有项目的操作。虽然插入操作没有任何问题,但删除操作会导致应用程序在调用 endRemo
在已经实例化的 QAbstractListModel 子类中,如何在每列中添加包含数据的行,并让关联的 QListView 显示新行? 似乎唯一的方法是在我的模型中重新实现 insertRow 和 s
我试图了解人们如何选择使用 QAbstractListModel 还是 QObject 和 QQmlListProperty。 鉴于 QQmlListProperty 处理必须使用 QAbstract
我正在尝试创建一个 QAbstractListView 以与 QComboBox 一起使用,该 QComboBox 维护其包含的项目的排序列表。我在下面提供了一些示例代码来说明我的问题。当我更新列表中
我正在尝试实现 QAbstractListModel 类以显示几个类似的小部件。以下代码显示了我的问题: import sys from PyQt4 import QtCore from PyQt4
我的问题是,如何将自定义对象指定为从 QAbstractListModel 派生的模型中的角色所以当在 ListView 中可视化它时我可以访问它的成员变量。这里有一个例子是一些简单的代码示例: 这是
我正在尝试按照本教程 Models and Views: AbstractItemModel Example 子类化 QAbstractListModel 来查看 qml 中的 C++ 模型列表 这是
大家好 我已经扩展了我自己的 QAbstractListModel 来改变 QCombobox 的背景颜色。如图所示,我有两个问题。1)如第一张图片快照所示,所选项目没有出现背景颜色。2) 选择项目时
我已经在 QML 中使用 TableViewColumn 实现了 TableView,其中的一些角色如下: TableView { TableViewColumn { role
我有课MyListModel ,它继承自使用 QListView 或自定义子类显示的 QAbstractListModel。我希望列表中的每个项目都是可编辑的,并且用户能够拖放以重新排列项目的顺序(我
我在 C++ 中有一个分层(嵌套)QAbstractListModel,即 Outer 模型的项目是 Inner 模型的实例, Inner 类的项是一些 QObject 派生的 Data 实例。 Ou
我是 Qt 新手,所以请耐心等待。 我已经成功地从 StringList 和对象的 QList 填充 ListView* 我现在正在努力解决的是使用 C++ 中定义的派生 QAbstractListM
我通过继承自 QAbstractListModel 创建了一个 ListView 模型。我实现了 data(const QModelIndex &, int ) 来提供列表项背景颜色(在 Qt::Ba
我正在尝试创建一个基于异步数据库 API 的列表模型。这是我希望如何使用它的 qml 示例: ListView { id: view; anchors.fill: parent;
我正在关注 this PySide tutorial尽可能接近使用 PyQt5。当我运行我的代码时,出现此错误:ReferenceError: pythonListModel is not defin
我是一名优秀的程序员,十分优秀!