2015-02-10 55 views
0

我正在使用Qt 5.2.1,我有一個tableview,我已經啓用了用戶對列的排序,即他們可以拖放列標題重新排列它們。我想添加一個右鍵單擊選項「Move to front」,在這裏用戶可以右鍵單擊一個列標題,當點擊該選項時,該列將被移動到表格的最左邊的位置(第一列索引)。我已經將它設置在正確的位置,但是我無法弄清楚如何在列到達該位置時移動它。重新安排工作正常與拖放,但我不知道如何自動去一個給定的索引。Qt - 將表列移動到表格第一列索引

回答

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

是否有任何方式使用QAbstractItemModel來代替? – thnkwthprtls 2015-02-11 16:26:29

相關問題