2011-01-16 16 views
11

Önceden oluşturulmuş bir QAbstractListModel alt sınıfında, her sütuna veri içeren bir satırı nasıl eklerim ve ilişkili QListView'ın yeni satırı görüntülemesini sağlarım?QAbstractListModel alt sınıfına yeni bir satır ekleyerek programlı olarak ekleme

Bunu yapmanın tek yolu, benim modelimde insertRow ve setData öğelerini yeniden bir araya getirmek ve ardından bir satır eklemek için başka bir işlev içindeki bir sıra dizisiyle bunları birleştirmek gibi görünüyor. Bunu yapmalı mıyım? Kesinlikle Qt yeni bir satır eklemeyi kolaylaştırmalıdır.

Çok teşekkürler! --Dany.

+1

, Ben yazdım, ben sadece yanmış fark: P basit bir deyişle Sorum şu: nasıl QAbstractItemModel alt sınıfıma yeni bir satır ekledim? –

cevap

15

Modelinizin veri deposunu beginInsertRows() ve endInsertRows() arasında değiştirin. Örneğin, bir düz liste modeliniz olduğunu ve modelinizin verileri dahili olarak bir QVector m_data'da sakladığını varsayalım. Sen yani liste prepend 0 konumunda bir satır eklemek istiyorum: Yine bu soruya bakarak üzerine

beginInsertRows(QModelIndex(), 0, 0); //notify views and proxy models that a line will be inserted 
m_data.prepend(somedata); // do the modification to the model data 
endInsertRows(); //finish insertion, notify views/models 
+0

Bu sadece iyi çalıştı ve liste listemdeki bazı öğeleri görmek için hoş bir atılım oldu. Ancak, tam anlamıyla bir buçuk gün boyunca bunu anlamaya çalıştım ve şimdiki problemim 1x4 veri setini göstermeye çalışıyor. Şu anda sadece bir sütun değerinde veri ve sütun başlıklarımın hiçbiri gösterilmiyor. Neyin yanlış gittiğine dair herhangi bir işaretçiniz var mı? Tamamen hayal kırıklığına uğramış olduğumun yanı sıra, Qt'yi liste verisi kadar basit bir şey yapmanın ne kadar zor olduğunu biliyorum. –

+3

@nessup: QListView yalnızca bir sütunu destekler. Birden fazla sütun ve başlık istiyorsanız, QTreeView veya QTableView kullanmanız gerekir. –

1

Korkarım ki böyle yapmak zorundasınız. insertRows() ve removeRows() uygulamalarını sağlayabilir boyutlandırılabilir liste benzeri veri yapılarına arabirimleri sağlayan

Modelleri: docs itibaren.

+0

Bu linkler ölü – Aidenhjj