2009-07-28 28 views

cevap

4

modeli, erişilebilir QListView için, öğeleri tutar. Böyle bir şey yapabilirsiniz:

QListView* view ; // The view of interest 

QAbstractItemModel* model = view->model() ; 
QStringList strings ; 
for (int i = 0 ; i < model->rowCount() ; ++i) 
{ 
    // Get item at row i, col 0. 
    strings << model->index(i, 0).data(Qt::DisplayRole).toString() ; 
} 

Ayrıca metin yazıldığında güncellenen dizeleri elde etmek istiyorum söz - Eğer dizeleri ayıklar işlevinize modelin dataChanged() sinyalini bağlayarak yapabilirsiniz. QAbstractItemModel::dataChanged()'a bakın.

+0

bu doğru mu? QObject :: connect (model, SIGNAL (dataChanged (QModelIndex, QModelIndex)), client_, SLOT (onText())) Burada client_, QObject türetilen bir sınıftır ve onText, ortak yuvalar altında bildirilmiştir. –

+0

Evet, bu fikir. OnText() imzanız dataChanged() olanlar ile de eşleşiyorsa, yalnızca listenin tamamı yerine verilerin değiştiği dizinler arasında geçiş yapabilirsiniz. – swongu

+0

bu şimdi benim satırım: QObject :: connect (model, SIGNAL (dataChanged (const QModelIndex, const QModelIndex)), client_, SLOT (onText (const QModelIndex, const QModelIndex))); doğru döndürür, ancak "onText" işlevine koyduğum cout'u göremiyorum. Herhangi bir fikir? –

3

QListView nesnesini kök QModelIndex için sorabilir ve bunu kardeş/çocuk yöntemleri kullanarak farklı girişler üzerinde yinelemek için kullanabilirsiniz. Dizindeki veri yöntemini Qt :: DisplayRole olarak belirtilen rolle çağırarak her diziyle ilişkilendirilmiş metne erişebilirsiniz. Daha fazla ayrıntı için

aşağıdaki belgelere bakın:

QAbstractItemView - üst sınıf QListView::model() tarafından

QModelIndex

+0

ve http://doc.trolltech.com/4.5/qvariant.html#toString –

+0

teşekkürler, deneyin. Yeni metin yazıldığında bunu yapmak için bağlanabileceğim bir yuva var mı? –

İlgili konular