Qt - 将表列移动到表的起始第一列索引

时间:2015-02-10 21:44:49

标签: qt tableview

我正在使用Qt 5.2.1,我有一个tableview,其中我已经启用了用户对列的排序,即他们可以通过标题拖放列来重新排列它们。我想添加一个右键单击选项"移到前面",用户可以右键单击列标题,单击该选项时,该列将移动到表格中最左边的位置(首先列索引)。我已经设置了它正确运行我的功能,但我无法弄清楚如何使它一旦到达那一点就移动它。重新排列可以通过拖放工作得很好,但我不确定如何将其自动转到给定的索引。

1 个答案:

答案 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);
}