2010-03-22 27 views
10

Şu şekilde belirli bir hücreye düzenleme moduna girmeye çalışıyorum:QTableView: QModelIndex'i nasıl doğru şekilde oluşturabilirim?

void MainWindow::on_addButton_released() { 
    tm->addRow(); 
    tableView->scrollToBottom(); 
    int ec=tm->firstWritableColumn(); 
    int r=tm->rowCount(QModelIndex()); 
    QModelIndex id = tm->index(r, ec, QModelIndex()); 
    tableView->setCurrentIndex(id); 
    tableView->edit(id); 
    qDebug() << "row:" << r << " col:" << ec << "index:" << id; 
} 

Benim modelim şöyle bir dizin oluşturur:

QModelIndex TableModel::index(int row,int column,QModelIndex parent) const { 
    Q_UNUSED(parent); 
    return createIndex(row,column,0); 
} 

Hata ayıklama çıktısı şuna benzer:

row: 9 col: 1 index: QModelIndex(9,1,0x0,TableModel(0xbf3f50)) 

setCurrentIndex()'nin çalışmakta olduğu görünmediğinden dizinin bir şekilde geçersiz olduğundan eminim.

+0

Kişisel 'endeksi yapmak için gerekli start()' aslında bir şey geçersiz kılmaz yöntemi ('QModelIndex' vs' const QModelIndex & '). Kopyala yapıştır hatası? –

cevap

13

OMG! yer beni yuttu!

satır numaraları sıranın 0 ile ben

int r=tm->rowCount(QModelIndex())-1; 
QModelIndex id=tm->index(r,ec,QModelIndex()); 
+2

Bunu sürekli olarak widget toolkits ile unutuyorum, bu yüzden asla 'row' ya da 'column' kullanmamayı deneyeceğim. Bunun yerine, "rowIndex" (sıfır tabanlı) ve çok daha nadiren "rowNumber" (tek tabanlı) kullanıyorum. – kevinarpe

+0

'tm' buradaki tablo modeli olmalı mı? – oya163

+0

evet tm masa modelidir –

İlgili konular