【发布时间】:2018-04-16 12:14:17
【问题描述】:
我在QTreeView 中有一个项目列表。每个项目都包含一个QImage 对象。如果我尝试拖放项目,程序会冻结。但是当我注释掉objMod._Image = QImage(flags = Qt.AutoColor)这一行时,程序运行良好。
如何使用QImage 对象拖放项目? QImage 包含渲染的图像。渲染过程需要一段时间,所以最好保留 QImage 对象。
import sys
import os
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtUiTools import *
from PIL import Image, ImageCms, ImageQt
class ObjModel:
def __init__(self):
self._Image = None
class DragMoveTest(QMainWindow):
def __init__(self):
super(DragMoveTest,self).__init__()
self.initGUI()
self.show()
def initGUI(self):
self.treeView = QTreeView()
modelTreeView = QStandardItemModel()
self.treeView.setModel(modelTreeView)
for i in range(0, 4):
objMod = ObjModel()
objMod._Image = None
objMod._Image = QImage(flags = Qt.AutoColor)
item = QStandardItem('Test: %s' % str(i))
item.setData(objMod, Qt.UserRole + 1)
modelTreeView.invisibleRootItem().appendRow(item)
self.treeView.setDragDropMode(QAbstractItemView.InternalMove)
self.setCentralWidget(self.treeView)
def main(args):
app = QApplication(sys.argv)
qt_main_wnd = DragMoveTest()
ret = app.exec_()
sys.exit(ret)
if __name__ == "__main__":
main(sys.argv)
【问题讨论】:
标签: python-3.x drag-and-drop pyside qtreeview qimage