Qt - 将 table 列移动到 table 上开始的第一列索引

Qt - Move a table column to beginning first column index on the table

我正在使用 Qt 5.2.1,我有一个 table 视图,我在其中启用了用户对列的排序,即他们可以通过 header 拖放列到重新排列它们。我想添加一个 right-click 选项 "Move to front",用户可以在其中右键单击一列 header,当单击该选项时,该列将移动到 table(第一列索引)。我已将其设置为正确执行我的功能的位置,但我无法弄清楚一旦到达该点如何使其移动列。通过拖放可以很好地重新排列,但我不确定如何让它自动转到给定的索引。

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