QTableView: как установить столбец поиска - PullRequest
1 голос
/ 27 июля 2011

Я использую QTableView и подкласс QAbstractTableModel в качестве своей модели. Я видел это (по умолчанию), когда пользователь что-то печатает, QTableView начинает поиск набранного текста в первом столбце и прокручивает представление до соответствующего элемента. Это то, что я хотел, но не в первом столбце. Я не могу найти способ сказать (код) QTableView или QAbstractTableModel, который является «столбец поиска». Есть идеи?

Спасибо

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

QTableView обычно ищет в столбце, который в данный момент имеет фокус.Просто нажмите на ячейку в столбце, в котором вы хотите выполнить поиск, и начните вводить.

[Редактировать:]Что касается вашего комментария: Вы можете установить любую ячейку в активную ячейку, используя

QTableView* tableView = /* whatever */;
tableView->setCurrentIndex( const QModelIndex& index )

. Эта ячейка также будет выбрана.Если вы не хотите этого, вы можете сделать

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

Если у вас есть слоты, подключенные к текущему измененному [Row | Column] или selectionChanged сигналам selectionModel () представления таблицы, вы можете сделатьследующие, в зависимости от вашего кода:

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 );
1 голос
/ 28 июля 2011

Я нашел это решение:

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, он не будет работать: (

...