QT:QTableView读取单元格内容

时间:2014-03-22 07:51:44

标签: qt qtableview

我正在Windows 7(32位)下用QT创建者(QT 5.2.1)编写一个小程序,我在读取存储在TableView中的信息时遇到了问题。我的应用程序有3个元素,一个用于存储文本数据的TableView,一个用于显示信息的TextBrowser和一个buttom。 我修改了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吗?谢谢:))

1 个答案:

答案 0 :(得分:0)

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