【问题标题】:QT: QTableView read cell contentQT:QTableView 读取单元格内容
【发布时间】:2014-03-22 07:51:43
【问题描述】:

我正在 Windows 7(32 位)下使用 QT creator (QT 5.2.1) 编写一个小程序,但在读取存储在 TableView 中的信息时遇到问题。我的应用程序有 3 个元素,一个用于存储文本数据的 TableView、一个用于显示信息的 TextBrowser 和一个按钮。 我修改了 TableView 属性:当用户用鼠标选择一个单元格时,会选择整行并且不允许多行选择。

用户选择一行,当按下按钮时,我想读取特定 TableView 单元格的内容并将其显示在 TextBrowser 中。特别是,我想知道所选行的行索引,并读取具有该行索引和特定列索引的单元格的内容(示例 2)。

伪代码是这样的:

void my_program::on_pushButton_clicked()

{
    ui->textBrowser->append("button pressed");
    QItemSelectionModel *select = ui->tableView->selectionModel();
    int index_row = select->selectedRows();
    int index_column = 2;
    char cell_data[30] = ??[index_row][index_column]
    ui->textBrowser->append(cell_data);
}

主要问题是 select->selectedRows() 返回一个 QModelIndex ,它是索引的集合,我不知道如何将其转换为 int (由于不允许多选,它应该只有一个元素)。

如果有人能建议我继续前进的方法,我会很高兴。

谢谢 弗朗切斯科

编辑:

嗨,博格丹,非常感谢!!我通过使用成功读取了单元格内容

ui->textBrowser->append(ui->tableView->model()->data(ui->tableView->model()->index(2,5)).toString());

这给了我位置 2,5 的单元格的内容。 不确定这是否是最好的方法,但它有效! 您能否更准确地了解如何迭代 QModeIndexList ?谢谢:)

【问题讨论】:

  • QModelIndexList 只是 QList,因此您需要查看 QList 文档。
  • 数据不存储在表格视图中,它存储在视图的model中。视图就是这样 - 视图。
  • 请不要使用此类 cmets 编辑您自己的问题。如果您有评论,请将其作为评论发布在答案下方。如果你自己有更好的答案,你应该回答你自己的问题。
  • 好的,抱歉。这是我的第一条信息。以后我不会编辑帖子了。

标签: qt qtableview


【解决方案1】:

selectedRows() 返回 QModelIndexList,因此您需要对其进行迭代并调用 QModelIndex::data() 来获取存储的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多