Ich verwende ein QTableView mit einem von QSortFilterProxyModel abgeleiteten Model. Das QSortFilterProxyModel verwende ich, weil ich innerhalb der Liste sortieren und eben filtern möchte.
An und für sich funktioniert das auch so wie ich es gern hätte. Allerdings funktioniert das Einfügen einer Zeile nicht so ganz wie ich es gern hätte:
Wenn ich eine Zeile an aktueller Position einfüge:
Code: Alles auswählen
int row = msgView->currentIndex().row();
msgView->model()->insertRow(row);
Seltsam ist, dass die vertikale Beschriftung (Zeilennummern) aber schon abhängig von 'row' (siehe oben) verändert wird. Im angefügten Screenshot kann man das erkennen. Wenn die Liste so angezeigt würde dass diese Zeilennummern aufsteigend wären würde es so sein wie ich es gern hätte. Allerdings hab ich nichts gefunden wo ich dieses Verhalten beeinflussen könnte.
Ich möchte allgemein an beliebiger Position eine Zeile einfügen können, die dort auch angezeigt wird und erst bei Neusortierung ggf. verschoben wird.
Ich verwende VS2003.net mit QT4.3.4.
Das Model richte ich so ein :
Code: Alles auswählen
// Model einrichten
proxyModel = new diagToolProxyModel(this);
proxyModel->setSourceModel(new QStandardItemModel(1, 6, this));
proxyModel->setDynamicSortFilter(false);
// Spalten beschriften
proxyModel->setHeaderData(0, Qt::Horizontal, tr("Meldenummer"));
proxyModel->setHeaderData(1, Qt::Horizontal, tr("Meldetext"));
proxyModel->setHeaderData(2, Qt::Horizontal, tr("Symbol"));
proxyModel->setHeaderData(3, Qt::Horizontal, tr("Operand"));
proxyModel->setHeaderData(4, Qt::Horizontal, tr("Pegel"));
proxyModel->setHeaderData(5, Qt::Horizontal, tr("Priorität"));
Code: Alles auswählen
// View einrichten
msgView->setModel(proxyModel);
msgView->setAlternatingRowColors(true);
msgView->setSortingEnabled(true);
msgView->sortByColumn(0, Qt::AscendingOrder);
Ich hoffe ich konnte mein Anliegen "rüberbringen" und noch mehr hoffe ich dass mir da jemand weiterhelfen kann...
Gruß,
Christian