【问题标题】:Extract data from QTableView从 QTableView 中提取数据
【发布时间】:2011-11-30 15:05:58
【问题描述】:

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

到目前为止,我正在做以下事情:

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

有没有更好的办法?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    正如 Qt 文档中关于currentIndex 所述:

    除非当前选择模式是NoSelection,否则item也是 已选中

    所以你可以做得更快:

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

    【讨论】:

    • 我在doc 中找不到它。还有其他我不知道的文档吗? =)
    • @Royi 我在 Qt 4.7.3 doc QAbstractItemView::setCurrentIndex()找到了这句话@
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      通过model可以得到选中行第一个单元格的数据。

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

      不幸的是,Qt 不支持(我不知道为什么)以rowcolumn 作为参数的QModelIndex 构造函数。

      【讨论】:

      • 我想要一种直接的方法来从表格、树、列表等小部件中检索元素。
      猜你喜欢
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 2020-07-15
      • 1970-01-01
      • 2011-04-18
      相关资源
      最近更新 更多