我正在使用Qt 5.2.1,我有一个tableview,其中我已经启用了用户对列的排序,即他们可以通过标题拖放列来重新排列它们。我想添加一个右键单击选项"移到前面",用户可以右键单击列标题,单击该选项时,该列将移动到表格中最左边的位置(首先列索引)。我已经设置了它正确运行我的功能,但我无法弄清楚如何使它一旦到达那一点就移动它。重新排列可以通过拖放工作得很好,但我不确定如何将其自动转到给定的索引。
答案 0 :(得分:1)
void SomeClass::moveColumnToFront(int column, QTableView *table) {
// I assume that you are using QStandardItemModel
QStandardItemModel *model = qobject_cast<QStandardItemModel *>(table->model());
if (model) {
QList<QStandardItem *> columndData = model->takeColumn(column);
model->insertColumn(0, columndData);
}
}
<小时/> 你应该学习搜索文档!是的,可以使用
QAbstractItemModel
API执行此操作。但请记住,模型必须支持此功能(QStandardItemModel
确实如此)!如果您使用的是某些自定义模型,则可能无效。
void SomeClass::moveColumnToFront(int column, QTableView *table) {
bool success = table->model()->moveColumn(QModelIndex(), column,
QModelIndex(), 0);
}