Я делаю приложение Qt5.7, где я заполняю QListView
после чтения материалов из файла. Вот точный код.Qt5: Получить значение элемента, щелкнутого в listview
QStringListModel *model;
model = new QStringListModel(this);
model->setStringList(stringList); //stringList has a list of strings
ui->listView->setModel(model);
ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers); //To disable editing
Теперь это показывает список только штрафом в QListView
, что я создал. Теперь мне нужно сделать, чтобы строка, которую дважды щелкнула, использовала это значение в другом месте. Как мне это достичь?
То, что я пытался делать было прикрепить слушателя к QListView
таким образом
... // the rest of the code
connect(ui->listView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(fetch()));
...
И тогда у меня есть функция fetch
void Window::fetch() {
qDebug() << "Something was clicked!";
QObject *s = sender();
qDebug() << s->objectName();
}
Однако objectName()
функция возвращает «ListView», а не ListView или индекс.
Вы должны добавить параметр QModelIndex в свой слот и работать с ним. – Hayt