Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Модель/Представление _ как забрать QString c QListView

Автор: as270 20.1.2010, 13:20

Понимаю что вопрос глупый и надо до конца читать и разбираться с основами
но все же

заполнили listView
QString pathDir=QString::fromUtf8("/Путь/");
QDir dir(pathDir);
listParametr = new QStringList (dir.entryList(QDir::Dirs));
listParametrModel = new QStringListModel(*listParametr);
ui->listView->setModel(listParametrModel);

теперь пользователь выбрал что-то в listView,
как получить в формате QString то что выбрал пользователь

listParametr->at(listParametrModel->rowCount(ui->listView->currentIndex())) - возвращает первую строку,а мне надо активную

прошу прощения за свою тупость и непроходимость :rolleyes:

Автор: Litkevich Yuriy 20.1.2010, 13:32

Цитата(as270 @ 20.1.2010, 16:20) *
заполнили listView
представление не заполняют, заполняют модель, а представление отображает её содержимое. Отсюда вывод - брать нужно из модели.
Цитата(as270 @ 20.1.2010, 16:20) *
теперь пользователь выбрал что-то в listView,
Если так то смотри модель выделения (http://www.doc.crossplatform.ru/qt/4.4.3/model-view-selection.html#using-a-selection-model)

Автор: MaratQt 20.1.2010, 20:12

QString a=ui->listView->model->index(ui->listView->currentIndex()->row(),ui->listView->currentIndex()->column())->data().toString();

Вводил вручную, могут быть мелкие опечатки

Цитата(MaratQt @ 20.1.2010, 19:47) *
QString a=ui->listView->model->index(ui->listView->currentIndex()->row(),ui->listView->currentIndex()->column())->data().toString();

Вводил вручную, могут быть мелкие опечатки

А вообще, если не издеваться, то и такое должно работать:
QString a=ui->listView->currentIndex()->data().toString();

Правда короче?

Автор: as270 8.2.2010, 3:41

позвольте еще вопрос
как в listView выбрать например первую позицию ?
видимо с помощью setPositionForIndex ...
но как правильно записать всю голову сломал, помогите убогому пожалуйста

Автор: Litkevich Yuriy 8.2.2010, 13:09

as270, смотри слот у базового класса:
void QAbstractItemView::setCurrentIndex ( const QModelIndex & index ) [slot]

Автор: as270 14.2.2010, 14:31

сделал так, работает.

QModelIndex indexA = model->index(0, 0, QModelIndex());
ui->listView_3->setCurrentIndex(indexA);

Автор: as270 4.3.2010, 10:07

И еще вопросик
как посмотреть активен ли вижет, скрыт ли вижет?

каюсь за вопрос посмотрел внимательнее нашел

this->isHidden()      this->isActiveWindow()

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)