У меня возникла проблема с компонентом QListView.QlistView setCurrentIndex() не работает
Я создал простую форму со списком и таблицей. Тогда я положил этот код, как виджеты заселить с моделью данных, как я хочу:
QSqlQueryModel * modela = new QSqlQueryModel();
QSqlQueryModel * modelb = new QSqlQueryModel();
[...]
ui->listView->setModel(modela);
ui->tableView->setModel(modelb);
[...]
void MyWindow::on_listView_clicked(const QModelIndex &index)
{
ui->tableView->setCurrentIndex(ui->listView->currentIndex());
}
void MyWindow::on_tableView_clicked(const QModelIndex &index)
{
ui->listView->setCurrentIndex(ui->tableView->currentIndex());
// FAILS, does not react...
}
Первый слот (при нажатии любой элемент в списке следует виджет) работает, как и ожидалось, он автоматически выбирает соответствующий пункт в виджет tableview, но второй случай не работает, он просто не выбирает какой-либо элемент в списке ...
Что я хочу, так это то, что любой элемент, который пользователь нажимает в представлении таблицы, выбирается в списке.
Возможно ли это? Я очень старался, ища примеры и официальную документацию qt, но я не нашел правильного пути (также пытался подключиться к сигналу/слотам, но я не знаю, как точно подключить оба виджета).
Заранее спасибо.
Как знать, что выбрать? Вы используете индексы табличного представления для выбора элементов в представлении списка? Hm ... – vahancho
Индекс одинаковый для обоих виджетов, поэтому, если пользователь нажимает на третью строку в представлении таблицы, тогда третья строка списка должна быть выбрана (или выделена). Я сейчас пытаюсь это решение: аннулируются MyWindow :: on_tableView_clicked (Const QModelIndex и индекс) { ui-> listView-> setCurrentIndex (ui-> tableView-> currentIndex()); ui-> listView-> selectionModel() -> select (ui-> listView-> model() -> index (ui-> tableView-> currentIndex(). Row(), 0), QItemSelectionModel :: SelectCurrent); И это работает, но кажется очень уродливым способом ... } –
Почему бы не использовать два вида таблиц или два вида списка? – vahancho