Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: jatsuk от Май 04, 2011, 09:54



Название: 2 вопроса по listView
Отправлено: jatsuk от Май 04, 2011, 09:54
Есть listView, заполняется так
Код:
//есть таблица st
 QSqlTableModel *nsimbol;[code]
 nsimbol=new QSqlTableModel(0,db);
  nsimbol->setEditStrategy(QSqlTableModel::OnManualSubmit);
nsimbol->setTable("st");
ui->listView->setModel(nsimbol);
nsimbol->select();

Нужно изъять даныые из строки listView, которая выбрана. Как это сделать.
Пробовал что-то типа этого, не работает.
 QString atoop=nsimbol->record(ui->listView->currentIndex().row()).value("kl_bol").toString();

И второй вопрос. Как сделать, чтобы инфа listView сортировалась по алфавиту, когда выводится.
Делал тоже самое в tableview, а тут не знаю как делать.
ui->sim2->sortByColumn(0,Qt::AscendingOrder);[/code]


Название: Re: 2 вопроса по listView
Отправлено: Drafter от Май 04, 2011, 12:51
Цитировать
Нужно изъять данные из строки listView, которая выбрана.

Всё зависит от того, как Вы эти данные кладёте в модель. Я предпочитаю таким образом.
Код:
 QStandardItem *item = new QStandardItem("Item caption");
item->setData("string data one", Qt::UserRole + 1);
item->setData("string data two", Qt::UserRole + 2);
...
model->setItem(rowIdx, colIdx, item);

Извлекать, соответственно:
Код:
QString oneStr = listView->currentIndex.data(Qt::UserRole + 1).toString();
QString twoStr = listView->currentIndex.data(Qt::UserRole + 2).toString();

А по поводу сортировки - сортируйте модель.



Название: Re: 2 вопроса по listView
Отправлено: jatsuk от Май 04, 2011, 13:18
Данные Qstring

nsimbol->setTable("st");
ui->listView->setModel(nsimbol);

Как в этом случае изымать ?
Просто так привык, да и пол страницы кода не охото переписывать ;)


Название: Re: 2 вопроса по listView
Отправлено: Drafter от Май 04, 2011, 14:58
попробуйте что-нибудь вроде:

ui->listView->currentIndex().data(Qt::DisplayRole).toString();



Название: Re: 2 вопроса по listView
Отправлено: jatsuk от Май 04, 2011, 15:08
Спасибо большое, так заработало  :)