Ich habe mir eine Klasse gebaut, welche vom QSqlQueryModel abgeleitet ist
Code: Alles auswählen
class MyCustomSqlModel :public QSqlQueryModel
Code: Alles auswählen
QVariant data(const QModelIndex &item,int role = Qt::DisplayRole ) const;
Soweit klappt das auch alles ganz gut.
Nun zum Problem. Das ganze klappt nur ca 1-2 mal. Danach fliege ich jedesmal mit einer Exception raus.
Hier der Code den ich (zyklisch bzw beim drücken eines Buttons) aufrufe
Code: Alles auswählen
void MyClass::on_AuftraglisteRefreshTimer()
{
QSqlQuery query(objQSqlDb);
QString query_for = tr( "Select (Select count(*) from T_auftrag) as Gesamt"
", (Select count(*) from T_auftrag where Status = 0) as Warten"
", (Select count(*) from T_auftrag where Status = 1) as Online"
", (Select count(*) from T_auftrag where Status = 2) as Storno");
query.exec(query_for);
while (query.next())
{// query.record().value("Gesamt").toInt();
ui.labelGesamtDSSHOW->setText(QString("%0").arg(query.record().value("Gesamt").toString()));
ui.labelinBEARBEITUNGSHOW->setText(QString("%0").arg(query.record().value("Online").toString()));
ui.labelSTORNOSHOW->setText(QString("0").arg(query.record().value("Storno").toString()));
ui.labelWARTENDSHOW->setText(QString("%0").arg(query.record().value("Warten").toString()));
}
query.clear();
//modelSQL.clear();
modelSQL.setQuery("Select Zustand = case STATUS when 0 then 'wartet' when 1 then 'in Bearbeitung' when 2 then 'storniert' else 'keine information' end , DATUM, FAHRZEUGKENNNUMMER ,TAKT, PR_NR, MODELL from T_Auftrag order by Status DESC, Datum", objQSqlDb);
if (modelSQL.lastError().text().length() > 3)
WriteMessage( QString("ERROR %0").arg(modelSQL.lastError().text()) );
ui.tableView->setModel(&modelSQL);
ui.tableView->show();
ui.tableView->resizeColumnsToContents();
ui.tableView->resizeRowsToContents();
// ausdehnung komplett nutzen
ui.tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
ui.tableView->verticalHeader()->setResizeMode(QHeaderView::Stretch);
ui.tableView->horizontalHeader()->resizeSections(QHeaderView::Stretch);
ui.tableView->verticalHeader()->resizeSections(QHeaderView::Stretch);
}
Die Funktion schmiert mir nach ui.tableView->setModel(); ab. Eine Exception in qabstractitemmodel.cpp in der Fkt
Code: Alles auswählen
void QAbstractItemModelPrivate::rowsAboutToBeRemoved(const QModelIndex &parent,
int first, int last)
Komisch sind hier die Übergabepara´s... der parent r=???c =??? d=???
und auch die Indexe lassen auf Sinnloses schließen (tierischHohe Werte)
Einer von euch ne Idee was ich falschmache oder eine Idee wie ich das besser machen könnte? Ziel ist es das ich zyklisch eine Tabelle aktualisiere bzw auch durch Userinteraktion mal zwischendurch.
Gibt es schon ne Update Fkt und ich muss net jedesmal das model neu von Hand setzen? Oder wie mache ich das am Geschicktesten?
Besten dank schonmal im Vorraus