在 C++ 中打印 QTableView 中的所有可见行

Print all visible rows in QTableView in c++

我的 QTableView 中有 100 多行。但一次只能看到 6 行。要查看下一组行,我必须使用滚动条。

我想在 QTableView 中打印可见行。但不能那样做。我只能打印单个选定的行。

  QItemSelectionModel *select = _table->selectionModel();
  QModelIndexList  selectedRow = select->selectedRows();
  QModelIndex index = selectedRow.at(0);

  int columnCount = 2; // there are 2 columns in a row

  QString copySelectedRowText_;
  for(int i = 0 ; i < columnCount; i++)
  {
      copySelectedRowText_ += index.sibling(index.row(), i).data().toString()+ " ";
  }
  
  qDebug() << copySelectedRowText_;
 

如何在QTableView中打印可见行?

可以通过verticalScrollbarvalue()获取当前行号,也可以通过pagestep().

获取可显示行数

这是我的代码,你可以试试:

void TesWidget::onbtnClicked()
{
    int start_index = ui.tableView->verticalScrollBar()->value();
    int page_cnt = ui.tableView->verticalScrollBar()->pageStep();
    int end_index = start_index + page_cnt;

    int row_cnt = model_->rowCount();
    int col_cnt = model_->columnCount();

    QString text;
    for (int i = start_index; i < row_cnt && i <= end_index; i++)
    {
        for (int j = 0; j < col_cnt; j++)
        {
            text.append(QStringLiteral("%1 ").arg(model_->item(i,j)->text()));
        }
        text.append("\n");
    }
    qDebug() << text;
}