我有一个QTableview,它设置了QTableModel。
此视图可以修改,例如。行/列移位和移除等。
我有一个函数将表模型导出到带有QTableModel的excel / csv,但是如果它被修改了,模型不会反映视图,所以我有一个基于QTableViews当前布局创建新表模型的函数
但是我现在希望能够选择几行并仅导出所选的,所以本质上我需要根据视图中的选定行创建一个模型,而不是全部。
下面的显示了我当前的循环,
// Loop over the view's data and add it to the map for the model
for(int i = 0; i < rowIndexs.size(); ++i)
{
// Loop over visible headers only as we are matching the view not the model
for(int j = 0; j < headersIndexs.size(); ++j)
{
// Column is the logical index of the visual index of the current column, this values is used as which column to look at in the model to get the cell data
int column = this->horizontalHeader()->logicalIndex(headersIndexs.at(j));
int row = this->verticalHeader()->logicalIndex(rowIndexs.at(i));
/// add to some data container thats not important for this question....
}
所以现在只让选择的行添加到我的容器中我想检查是否选中了这一行,例如。
if(this->VerticalHeader()->at(row).isSelected)
{
// Add it to the container
}
else
{
// Ignore it and just go to the next one
}
QTableView Rows上是否存在这样的isSelected
函数?如果是这样的话是什么?
干杯
答案 0 :(得分:5)
QItemSelectionModel *select = tableview->selectionModel();
QItemSelctionModel有以下调用来检索QModelIndex列表。
QModelIndexList selectedColumns ( int row = 0 ) const
QModelIndexList selectedIndexes () const
QModelIndexList selectedRows ( int column = 0 ) const
从QModelIndex到col和row
int row = modelindex.row()
int col = modelindex.col()
从(row,col)到QModelIndex
QModelIndex idx = QTableModel->index(row, col)