将表列移动到表上第一列索引的开头

问题描述 投票:0回答:1

使用 Qt 5.2.1,我有一个 QTableView,其中我启用了用户对列的排序,即,他们可以通过标题拖放列来重新排列它们。

我想添加一个右键单击选项“移到前面”,用户可以右键单击列标题,单击该选项时,该列将移动到表格的最左边位置(第一列索引).

我已将其设置在正确到达我的功能的位置,但我无法弄清楚如何使其在到达该点后移动该列。重新排列可以通过拖放很好地工作,但我不确定如何让它自动转到给定的索引。

qt qtableview
1个回答
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.