2010-03-22 16 views
10

मैं इस तरह के एक विशिष्ट सेल पर संपादन मोड दर्ज करने की कोशिश कर रहा हूं:QTableView: मैं सही ढंग से QModelIndex कैसे बना सकता हूं?

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; 
} 

मेरा मॉडल इस तरह की एक अनुक्रमणिका बनाता है:

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

डीबग आउटपुट इस तरह दिखता है:

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

मुझे काफी यकीन है कि इंडेक्स किसी भी तरह अमान्य है क्योंकि setCurrentIndex() काम नहीं कर रहा है।

+0

आपका 'सूचकांक करने के लिए की जरूरत है शुरू()' विधि वास्तव में कुछ भी हावी नहीं होता ('QModelIndex' बनाम' स्थिरांक QModelIndex और ')। कॉपी-पेस्ट त्रुटि? –

उत्तर

13

ओएमजी! जमीन मुझे निगलो!

पंक्ति संख्या पंक्ति 0 के साथ, मैं

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

मैं इसे विजेट टूलकिट के साथ लगातार भूल जाता हूं, इसलिए मैं कभी भी 'पंक्ति' या 'कॉलम' का उपयोग कभी नहीं करने का प्रयास करता हूं। इसके बजाय, मैं 'rowIndex' (शून्य-आधारित के लिए) का उपयोग करता हूं, और अधिक दुर्लभ रूप से, 'rowNumber' (एक-आधारित के लिए)। – kevinarpe

+0

'टीएम' यहां टेबल मॉडल होना चाहिए ?? – oya163

+0

हाँ टीएम टेबल मॉडल है –

संबंधित मुद्दे