【发布时间】: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