Tôi đang tạo một lớp con của QAbstractItemModel
để được hiển thị trong một QTreeView
.Làm cách nào để lấy lại đối tượng python của tôi từ một QVariant trong PyQt4?
My index()
và parent()
chức năng tạo ra QModelIndex
sử dụng chức năng QAbstractItemModel
thừa hưởng createIndex
và cung cấp cho nó row
, column
, và data
cần thiết. Ở đây, cho mục đích thử nghiệm, dữ liệu là một chuỗi Python.
class TestModel(QAbstractItemModel):
def __init__(self):
QAbstractItemModel.__init__(self)
def index(self, row, column, parent):
if parent.isValid():
return self.createIndex(row, column, "bar")
return self.createIndex(row, column, "foo")
def parent(self, index):
if index.isValid():
if index.data().data() == "bar": <--- NEVER TRUE
return self.createIndex(0, 0, "foo")
return QModelIndex()
def rowCount(self, index):
if index.isValid():
if index.data().data() == "bar": <--- NEVER TRUE
return 0
return 1
def columnCount(self, index):
return 1
def data(self, index, role):
if index.isValid():
return index.data().data() <--- CANNOT DO ANYTHING WITH IT
return "<None>"
Trong index()
, parent()
, và data()
chức năng tôi cần để có được dữ liệu của tôi trở lại. Nó đến như là một QVariant
. Làm cách nào để lấy lại đối tượng Python của tôi từ QVariant?
Câu trả lời này phù hợp hơn với câu hỏi ban đầu. Nó đã giúp tôi cảm ơn – Craig