【问题标题】:QTableView: how to set the search columnQTableView:如何设置搜索栏
【发布时间】:2011-07-27 06:48:11
【问题描述】:

我使用 QTableView 和 QAbstractTableModel 的子类作为其模型。 我看到(默认情况下)当用户键入内容时,QTableView 开始在第一列中搜索键入的文本并将视图滚动到匹配的元素。这是我想要的,但不是在第一列。 我找不到告诉(代码)QTableView 或 QAbstractTableModel 哪个是“搜索列”的方法。 有什么想法吗?

谢谢

【问题讨论】:

    标签: qt search typing qtableview


    【解决方案1】:

    QTableView 通常在当前具有焦点的列中搜索。只需单击要搜索的列中的单元格并开始输入。

    [编辑:]
    关于您的评论:您可以使用

    将任何单元格设置为活动单元格
    QTableView* tableView = /* whatever */;
    tableView->setCurrentIndex( const QModelIndex& index )
    

    这也将选择单元格。如果你不想这样,你可以这样做

    QModelIndex index = /* whatever */;
    tableView->selectionModel()->setCurrentIndex( index, QItemSelectionModel::NoUpdate );
    

    如果您有插槽连接到表视图的 selectionModel() 的当前 [Row|Column]Changed 或 selectionChanged 信号,您可能需要执行以下操作,具体取决于您的代码:

    QTableView* tableView = /* whatever */;
    QModelIndex index = /* current row, whatever column you want to search in */;
    
    QItemSelectionModel* selectionModel = tableView->selectionModel();
    // probably check for a NULL pointer? - not really sure if this is possible
    
    bool signalsWereBlocked = selectionModel->blockSignals( true );
    selectionModel->setCurrentIndex( index );
    selectionModel->blockSignals( signalsWereBlocked );
    

    【讨论】:

      【解决方案2】:

      我找到了这个解决方案:

      QAbstractItemModel *model = myTableView->model();
      QModelIndex index = model->index( 0, SearchColumn ); // whatever column you want to search in
      myTableView->setCurrentIndex(index);
      //now SearchColumn has focus and future search will operate in this column
      

      但是如果我使用 QTreeView 而不是 QTableView 它就不起作用:(

      【讨论】:

      • 检查我编辑的答案,可能treeView->selectionModel()->setCurrentIndex(...) 也可以。我不知道树视图是否允许与表格视图相同的键盘搜索,但是
      • 是的,我检查过并且 treeView->selectionModel()->setCurrentIndex(...) 工作得很好(并且有更多选项)。谢谢!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      • 2021-11-21
      • 2018-12-31
      • 2016-08-20
      相关资源
      最近更新 更多