Как выбрать строку в QListView - PullRequest
11 голосов
/ 03 августа 2011

Я все еще борюсь с использованием QListView, я пытаюсь выбрать одну конкретную строку в представлении и не могу понять, как это сделать.

Я обнаружил аналогичный вопрос в StackOverflow, в котором рекомендуется использовать метод createIndex() модели, однако этот метод защищен (возможно, он был общедоступным, но больше не существует), поэтому он не работает для меня. Любое предложение?

Ответы [ 2 ]

17 голосов
/ 03 августа 2011

Вы можете получить индекс чего угодно, просто позвонив

QModelIndex indexOfTheCellIWant = model->index(row, column, parentIndex);

Затем вы можете позвонить setCurrentIndex(indexOfTheCellIWant), как сказал Бруно в своем ответе.

Если модель содержит только стандартный списокэлементы в отличие от древовидной структуры, то это еще проще.Поскольку мы можем предположить, что элемент является корневым элементом, а не родителем.

QModelIndex indexOfTheCellIWant = model->index(row, column);

С древовидной структурой это немного сложнее, потому что мы не можем просто указать строку и столбец, нам нужноуказать их по отношению к родителю.Если вам нужно узнать об этой части, дайте мне знать, и я объясню больше.

Еще одна вещь, которую стоит отметить.Выбор основан на ячейках, а не на строках.Поэтому, если вы хотите убедиться, что когда пользователь выбирает ячейку (или вы делаете через код), что выделена вся строка, вы можете сделать это, установив «selectionBehavior» на себя.

list->setSelectionBehavior(QAbstractItemView::SelectRows);
3 голосов
/ 03 августа 2011

Вы можете использовать QAbstractItemView::setCurrentIndex ( const QModelIndex & index )

...