2011-11-30 99 views
1

我有一个QTableView实例限于单行选择。我不想关心用户按下的单元格,但它应该始终提取(selectedRow,0)中的数据。从QTableView提取数据

到目前为止,我做了以下内容:

QModelIndexList indices = _ui->_tbl->selectionModel()->selection().indexes(); 
QModelIndex id = indices.at(0).sibling(indices.at(0).row(),0); 

有没有更好的办法?

回答

5

如关于currentIndex Qt的文档指出:

除非当前选择模式是NOSELECTION,该项目也是 选择

所以,你可以做到这一点更快:

QModelIndex index = _ui->_tbl->currentIndex() ; 
QModelIndex id = index.sibling(index.row(),0) ; 
+0

我找不到它在[DOC](http://doc.qt.nokia.com/latest/qabstractitemview.html#currentIndex)。是否有另一个我不知道的文档? =) –

+0

@Royi我发现这句话的Qt 4.7.3 DOC'QAbstractItemView中:: setCurrentIndex()' – azf

1

使用QItemSelectionModel::selectedRows取出一步。它为您提供特定列的索引(默认为o)。因此:

QModelIndex index = _ui->_tbl->selectionModel()->selectedRows(0).at(0); 
0

You ca n获取所选行的第一个单元格的数据,如果您通过model

QModelIndex id = _ui->_tbl->model()->index(_ui->_tbl->currentIndex().row(),0); 

可惜Qt不支持(我想不通为什么)一个QModelIndex构造与rowcolumn作为参数。

+0

我想直接的方法来检索部件的元素,如表格,树,列表等。 –