파이썬에서 QAbstractListModel에 관한 문제가 있습니다. 내 모델을 만들려고합니다. 문제는 뷰가 내 값 목록을 표시하지 않는다는 것입니다.PySide : QListView와 함께 QAbstractListModel 사용하기
from PySide.QtCore import *
import PySide.QtCore
from PySide.QtGui import *
from PySide import QtCore, QtGui
import sys
class ModelPoc(QAbstractListModel):
m_items=[];
def __init__(self,parent = None):
QtCore.QAbstractListModel.__init__(self, parent)
def initialize (self,mlist):
self.m_items = mlist;
def rowCount(self, parent = QModelIndex()):
return len(self.m_items)
def setData(self, index, value, role = Qt.EditRole):
if role == Qt.EditRole:
self.m_items[ index.row() ] = str(value.toString());
self.dataChanged.emit(index, index);
return True
return False
def data(self, index, role = Qt.DisplayRole):
ret = "test";
if role == QtCore.Qt.DisplayRole:
ret= str(self.m_items[index.row()]);
print (ret);
return ret;
def flags(self, index):
return QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
class Main(QtGui.QMainWindow, ui_test.Ui_MainWindow):
m_pocModel = poc_model.ModelPoc();
def __init__(self,parent=None):
super(Main,self).__init__(parent);
self.ui = ui_test.Ui_MainWindow();
self.ui.setupUi(self);
self.ui.pushButton.clicked.connect(self.clickedMyButton);
self.init();
def init(self):
self.ui.listView.setModel(self.m_pocModel);
Main.m_pocModel.initialize(["test", "tes1t", "t3est", "t5est", "t3est"]);
self.ui.listView.show();
@Slot()
def clickedMyButton(self):
text = self.ui.lineEdit.text();
self.ui.label.setText(text);
app = QtGui.QApplication(sys.argv);
test = Main();
test.show();
sys.exit(app.exec_());
이 스크립트를 실행 한 후에는 목록보기에서 anytithng가 표시되지 않습니다.
복사/붙여 넣기 오류가 발생했습니다. 모델 클래스가 표시되지 않았습니다. – ekhumoro
조언을 주셔서 감사합니다. 나는 그 – crn
당신의 코드가 _minimal_ 예에서 멀리 떨어져 있다고 고친다. – buhtz