QSortFilterProxyModel + QTreeView: Falsche Werte
Verfasst: 29. Mai 2007 17:27
hi,
ich habe hier mal zum testen und lernen eine kleine qt4 applikation geschrieben.
diese zeig mir daten einer sqlite db an. ich habe alles mit qtreeview gemacht. wenn ich dann einen datensatz anklicke werd dieser in labels angezeigt, das funktioniert auch alles ohne probleme. jetzt habe ich aber ein QSortFilterProxyModel damit ich die daten sortieren kann eingefügt. jetzt werden immer die flaschen daten angezeigt, wenn ich einen datensatz anklicke.
hier ist mein code:
hat da jemand eine ahnung?
ich habe hier mal zum testen und lernen eine kleine qt4 applikation geschrieben.
diese zeig mir daten einer sqlite db an. ich habe alles mit qtreeview gemacht. wenn ich dann einen datensatz anklicke werd dieser in labels angezeigt, das funktioniert auch alles ohne probleme. jetzt habe ich aber ein QSortFilterProxyModel damit ich die daten sortieren kann eingefügt. jetzt werden immer die flaschen daten angezeigt, wenn ich einen datensatz anklicke.
hier ist mein code:
Code: Alles auswählen
connect(itemView->selectionModel(), SIGNAL(clicked(const QModelIndex&)),
SLOT(showMovieInfos(const QModelIndex&)));Code: Alles auswählen
void MainWindow::showMovieInfos(const QModelIndex& index)
{
QSqlRecord record = queryModel->record(itemView->currentIndex().row());
movieTitleEdit->setText(record.value("title").toString());
movieAuthorEdit->setText(record.value("author").toString());
movieYearEdit->setText(record.value("year").toString());
}
Code: Alles auswählen
void MainWindow::refreshData()
{
QSqlDatabase db = QSqlDatabase::database("dvdmanager");
// debugging stuff
/*
QSqlQuery query("SELECT * FROM dvdmanager", db);
QSqlRecord record = query.record();
while (query.next()) {
QString name =
query.value(record.indexOf("name")).toString();
qDebug() << query.at() << ":" << name;
}
*/
queryModel = new QSqlQueryModel;
queryModel->setQuery("SELECT title, author, year FROM dvdmanager", db);
//remove id
//queryModel->removeColumn(0);
queryModel->setHeaderData(0, Qt::Horizontal, tr("Title"));
queryModel->setHeaderData(1, Qt::Horizontal, tr("Author"));
queryModel->setHeaderData(2, Qt::Horizontal, tr("Year"));
proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(queryModel);
//itemView->setModel(queryModel);
itemView->setModel(proxyModel);
itemView->setAlternatingRowColors(true);
itemView->header()->setClickable(true);
itemView->header()->setSortIndicator(0, Qt::AscendingOrder);
itemView->header()->setSortIndicatorShown(true);
itemView->setSortingEnabled(true);
itemView->sortByColumn(0);
}