Seite 1 von 1

QT Designer Manual - Creating Database Applications

Verfasst: 3. Juli 2005 22:50
von FranX
Hallo,

ich versuche gerade dieses Beispiel ( http://doc.trolltech.com/3.3/designer-manual-8.html ) nachzuvollziehen und habe nun den Abschnitt: "Filtering One QDataTable by Another" abgeschlossen.

Soweit ich das verstehe, solte ich jetzt nur noch das Buch angezeigt bekommen, dessen Autor ich in der oberen Tabelle markiert habe. Stattdessen bekomme ich aber in der Vorschau (Strg+T) nach wie vor sämtliche Bücher angezeigt. Irgenwie scheint das System den Filter nicht zu berücksichtigen. (Wenn ich dagegen "hart" im Property Editor unter Filter eintrage: authorid = 3" bekomme ich auch nur dieses Buch angezeigt. Aber das will ich ja auch gar nicht).

Nebenbei: Das im Manual mehrfach erwähnte Verzeichnis qt/tools/designer/examples/book existiert bei mir nicht. Insofern bin ich mir nicht sicher, ob meine main.cpp korrekt ist:

main.cpp:

#include <qapplication.h>

#include "mainwindow.h"

int main( int argc, char *argv[] )
{
QApplication app( argc, argv );

if ( ! createConnections() )
return 1;

BookForm bookForm;
app.setMainWidget( &bookForm );
bookForm.show();

return app.exec();
}

und wo ich schon dabei bin: Das ui.h sieht so aus:

void BookForm::primeInsertAuthor( QSqlRecord * )
{
QSqlQuery query;
query.exec( "UPDATE sequence SET sequence = sequence + 1 WHERE tablename='author';" );
query.exec( "SELECT sequence FROM sequence WHERE tablename='author';" );
if ( query.next() ) {
buffer->setValue( "id", query.value( 0 ) );
}
}

void BookForm::newCurrentAuthor( QSqlRecord *author )
{
BookDataTable->setFilter( "authorid=" + author->value( "id" ).toString() );
BookDataTable->refresh();
}

Ich habe das Beispiel nun bereits mehrfach wiederholt, komme aber an dieser Stelle einfach nicht weiter. Bin für einen Tipp, wie ich den Filter noch funktionsfähig bekomme, dankbar!

Frank