Hallo,
ich habe mir grad Qt 4.3.0 installiert und hab folgendes Problem.
Ich habe eine QTreeView und ein eigenes Model, welches von QSqlQueryModel erbt. Wenn ich dieses Model nur der QTreeView übergebe, dann ist alles in Ordnung.
Wenn ich aber ein QSortFilterProxyModel zwischen der QTreeView und meinem Model setze und ich jetzt alle Datensätze lösche und danach neue anlege, dann habe ich in der ersten Zeile in den QTreeView eine Leerzeile. Je öfter ich das mache, je mehr Leerzeilen werden in den ersten Zeilen eingefügt.
Mit Qt 4.2.3 war das noch nicht so...
Hat vieleicht einer ne Ahnung woran das liegen könnte?
MfG RD1978
[gelöst] Qt 4.3.0 - Bug im QSortFilterProxyModel ?
[gelöst] Qt 4.3.0 - Bug im QSortFilterProxyModel ?
Zuletzt geändert von RD1978 am 12. Juli 2007 20:43, insgesamt 1-mal geändert.
Hi,
danke erstmal für deine schnelle Antwort...

MfG RD1978
danke erstmal für deine schnelle Antwort...
Code: Alles auswählen
// So ohne Sortierung funktioniert es
orderModel = new OrderModel( this );
treeViewOrder->setModel( orderModel );
treeViewOrder->setItemDelegateForColumn( 1, new OrderComboBoxDelegate( this ) );
// So funktioniert es seit Qt 4.3.0 nicht mehr
orderModel = new OrderModel( this );
QSortFilterProxyModel *proxyOrderModel = new QSortFilterProxyModel( this );
proxyOrderModel->setSourceModel( orderModel );
treeViewOrder->setModel( proxyOrderModel );
treeViewOrder->sortByColumn( 1, Qt::AscendingOrder );
treeViewOrder->setItemDelegateForColumn( 1, new OrderComboBoxDelegate( this ) );Hier in HST lebt die DDR noch... *Spaß*Wir haben 2007.
MfG RD1978
Code: Alles auswählen
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QStandardItemModel *model=new QStandardItemModel();
for (int i=0; i<10; i++) {
model->appendRow(new QStandardItem(QString("test %1").arg(i)));
}
QTreeView *view=new QTreeView();
view->show();
QSortFilterProxyModel *proxy= new QSortFilterProxyModel();
proxy->setSourceModel(model);
view->setModel(proxy);
view->sortByColumn(0);
model->removeRow(0);
model->appendRow(new QStandardItem("test 10"));
return app.exec();
}
Danke für deine Mühe, hab den fehler gefunden.
Mein Model erbt ja von QSqlQueryModel, QSqlQueryModel hat im Gegensatz zur übergeordneten Klasse QAbstractTableModel eine Methode clear() die alle resourcen des Models frei gibt. Ich hab beim refreshen vergessen clear() aufzurufen.
P.S.: Wundert mich aber dennoch, warum das bei Qt 4.2.3 vorher nicht aufgetreten ist.
MfG RD1978
Mein Model erbt ja von QSqlQueryModel, QSqlQueryModel hat im Gegensatz zur übergeordneten Klasse QAbstractTableModel eine Methode clear() die alle resourcen des Models frei gibt. Ich hab beim refreshen vergessen clear() aufzurufen.
P.S.: Wundert mich aber dennoch, warum das bei Qt 4.2.3 vorher nicht aufgetreten ist.
MfG RD1978