[PyQt] Master-detail relationship with plain QTableView tables (no SQL database)

Mark Summerfield list at qtrac.plus.com
Sat Jun 5 07:57:10 BST 2010

On 2010-06-05, Vadym Honcharuk wrote:
> Thanks a lot, Mark!

Hi Vadym,

One approach that you could take is to write the count of how many
things you're going to write and then write the things. For example,
you could try something like this:

write data:

    srcCount = self.srcTableModel.count()
    stream.writeInt32(srcCount) # NEW
    for row in range(srcCount):
	# write the row as before
	frmCount = self.frmTableModel.count()
	stream.writeInt32(frmCount) # NEW
	for row in range(frmCount):
	    # write the inner row as before

read data:

	    self.srcTableModel.ships = []
	    self.frmTableModel.ships = []
	    srcCount = stream.readInt32() # NEW
	    for srcRow in range(srcCount):
		if stream.atEnd():
		    # handle error
                equipment = QtCore.QString()
                stream >> equipment
                srcCode = stream.readInt32()
                srcName = QtCore.QString()
		stream >> srcName
                self.srcTableModel.ships.append(srcShip(equipment, srcCode, 
		frmCount = stream.readInt32() # NEW
		for frmRow in range(frmCount):
		    if stream.atEnd():
			# handle error
		    formationSrcName = QtCore.QString()
		    stream >> formationSrcName
		    evolvingGasDepletion = stream.readInt32()
		    evolvingGasTemperature = stream.readInt32()

I hope this helps!

Mark Summerfield, Qtrac Ltd, www.qtrac.eu
    C++, Python, Qt, PyQt - training and consultancy
        "C++ GUI Programming with Qt 4" - ISBN 0132354160

More information about the PyQt mailing list