QlistWidgetItem에 in과 함께 저장된 객체를 설정하려고합니다. setData 함수를 사용하여이 작업을 수행하고 있습니다. 항목 A에있는 동안 항목에 저장되도록 데이터를 가져올 수 있습니다. 그러나 QlistWidgetItem을 목록 B로 이동하려고하면 목록 A에 있던 데이터가 손실됩니다. listA.item에서 데이터를 가져온 다음 listB.item을 만들 때 같은 방법으로 거기에 저장하지만 성공하지 못했습니다.PyQt 4 목록에서 목록으로 데이터를 보유하는 QListWidgetItem
http://doc.qt.io/archives/qt-4.8/qlistwidgetitem.html#setData
는 내가 뭘하려고 오전의 예와 같이 코드 아래를 참조하십시오. 아래 프로그램을 실행하면 예제 항목이 맨 아래 목록에로드됩니다. 그런 다음 목록을 맨 위로 이동하고 데이터 요소를 내부에 유지하면서 맨 아래로 이동하려고 시도하지만 프로세스에서 길을 잃고 있습니다. 어떤 도움이 굉장 할 것입니다! 난 당신의 코드에서 볼 무엇
import sys
from PyQt4 import QtGui, QtCore
class Struct():
def __init__(self,row):
self.hotkey=row['hotkey']
self.command=row["COMMAND"]
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.setMinimumSize(600, 400)
self.initUI()
def initUI(self):
self.pushButton = QtGui.QPushButton(self)
self.pushButton.setGeometry(QtCore.QRect(90, 630, 100, 41))
self.pushButton.setObjectName(("pushButton"))
self.listWidget = QtGui.QListWidget(self)
self.listWidget.setGeometry(QtCore.QRect(20, 90, 261, 220))
self.listWidget.setObjectName(("listWidget"))
self.listWidget_2 = QtGui.QListWidget(self)
self.listWidget_2.setGeometry(QtCore.QRect(20, 379, 261, 211))
self.listWidget_2.setObjectName(("listWidget_2"))
self.pushButton_2 = QtGui.QPushButton(self)
self.pushButton_2.setGeometry(QtCore.QRect(160, 320, 31, 31))
self.pushButton_2.setObjectName(("pushButton_2"))
self.pushButton_3 = QtGui.QPushButton(self)
self.pushButton_3.setGeometry(QtCore.QRect(100, 320, 31, 31))
self.pushButton_3.setObjectName(("pushButton_3"))
self.pushButton.clicked.connect(self.testData)
self.pushButton_2.clicked.connect(self.moveItemsTopToBottom)
self.pushButton_3.clicked.connect(self.moveItemsBottomToTop)
self.loadRightList()
self.loadLeftList()
self.listWidget_2.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
self.listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
self.show()
def testData(self, state):
print self.listWidget_2.item(0).text()
print self.listWidget_2.item(0).data(32).toPyObject().hotkey
def moveItemsTopToBottom(self,state):
for i in self.listWidget.selectedItems():
x= i.data(32).toPyObject()
self.listWidget_2.addItem(i.text())
self.listWidget.takeItem(self.listWidget.row(i))
item_num=self.listWidget.count()-1
return
def moveItemsBottomToTop(self,state):
for i in self.listWidget_2.selectedItems():
self.listWidget.addItem(i.text())
self.listWidget_2.takeItem(self.listWidget_2.row(i))
item_num=self.listWidget_2.count()-1
self.listWidget_2.item(item_num)
return
def loadLeftList(self):
results = []
if (results!=[]):
for i in results:
self.listWidget.addItem(i['NAME'])
item_num=self.listWidget.count()-1
self.listWidget.item(item_num).setToolTip(i['COMMAND'])
x=Struct(i)
self.listWidget.item(item_num).setData(32,x)
return
def loadRightList(self):
results= [{'NAME': 'Example Query 1', 'TEAM_CD': 1, 'TYPE_CD': 0, 'COMMAND': 'SELECT * FROM CHARGE C WHERE C.ACTIVE_IND = 1', 'hotkey': 'cinfo', 'COMMAND_ID': 2}]
if (results!=None):
for i in results:
self.listWidget_2.addItem(i['NAME'])
item_num=self.listWidget_2.count()-1
self.listWidget_2.item(item_num).setToolTip(i['COMMAND'])
x=Struct(i)
self.listWidget_2.item(item_num).setData(32,x)
print self.listWidget_2.item(item_num).data(32).toPyObject().hotkey
else:
return None
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
도움 주셔서 감사합니다. 나는 그 기능을 제대로 살펴 보았 음에 틀림 없다. –