我正在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吗?谢谢:))
答案 0 :(得分:0)
selectedRows()返回QModelIndexList,因此您需要迭代它并调用QModelIndex :: data()来获取存储的数据。