【问题标题】:QTableView How to select multiple columns programmaticallyQTableView 如何以编程方式选择多个列
【发布时间】:2014-04-13 16:31:07
【问题描述】:

我正在尝试在代码中选择 QTableView 的两列。不幸的是,当我打电话时

tableView->selectColumn(1)
tableView->selectColumn(2)

它选择第一列,取消选择第一列并选择第二列。是否可以在代码中选择多列?

【问题讨论】:

    标签: c++ qt multiple-columns qtableview qtgui


    【解决方案1】:

    如果只需要保证允许用户选择多列,则需要to set upproper selection mode如下:

    tableView->setSelectionMode(QAbstractItemView::MultiSelection);
    

    如果您想以编程方式执行此操作,这就是这样做的方式:

    QModelIndexList itemSelection = tableView->selectionModel()->selectedColumns();
    int currentColumn = itemSelection.first().column();
    QItemSelection selectedItems = tableView->selectionModel()->selection();
    
    tableView->selectColumn(1);
    selectedItems.merge(tableView->selectionModel()->selection(), QItemSelectionModel::Select);
    tableView->selectColumn(2);
    selectedItems.merge(tableView->selectionModel()->selection(), QItemSelectionModel::Select);
    
    tableView->selectionModel()->clearSelection();
    tableView->selectionModel()->select(selectedItems, QItemSelectionModel::Select);
    

    免责声明:代码已采用from here,然后根据您的需要进行修改。

    【讨论】:

    • 谢谢!这就是我要找的。​​span>
    【解决方案2】:

    selectionModel.select() 在其 选择列 模式下可能更可取。

    在 PyQt 中:

    columns = [1,2,3]
    indexes = [model.index(0, c) for c in columns]
    mode = QtCore.QItemSelectionModel.Select | QtCore.QItemSelectionModel.Columns
    [tableView.selectionModel().select(index, mode) for i in indexes]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      相关资源
      最近更新 更多