QListViewItem am Ende einfügen
Verfasst: 14. Februar 2005 10:42
Hallo,
ich bin neu auf dem Gebiet der Qt-Programmierung und versuche mir eine Liste aus den Einträgen einer cfg-Datei zu erstellen.
Allerdings werden die Einträge immer an der ersten Position der Liste eingefügt. (Daher auch die Rückwärtszählende For-Schleife)
Wie kann ich die Einträge an der letzten Stelle der Liste einfügen?
Mein verwendeter Quellcode sieht folgendermaßen aus:
QString msg, temp;
QFile file( "SSDFObjekt.cfg" );
QTextStream ConfigFile( &file );
QString zeile, empty, nameItem, nameObject, nameGroup
QString nameTyp;
QChar zeichen;
unsigned int anzahl;
QListViewItem *typ;
QListViewItem *object;
QListViewItem *group;
QListViewItem *item;
// ListView
selectObjects = new QListView( centralWidget(), "gewählte Objekte" );
selectObjects->addColumn( "Objekt" );
selectObjects->addColumn( "Typ" );
selectObjects->setMinimumHeight( LIST_HEIGHT );
selectObjects->setMinimumWidth( LIST_WIDTH );
selectObjects->setAllColumnsShowFocus( true );
allObjects = new QListView( centralWidget(), "mögliche Objekte" );
allObjects->addColumn( "Objekt" );
allObjects->addColumn( "Typ" );
allObjects->setMinimumHeight( LIST_HEIGHT );
allObjects->setMinimumWidth( LIST_WIDTH );
allObjects->setAllColumnsShowFocus( true );
allObjects->setSorting( -1 );
//End ListView
// Label
selectLabel = new QLabel( "<b>ausgewählte Objekte<b>", central, "selectLabel" );
allLabel = new QLabel( "<b>mögliche Objekte<b>", central, "allLabel" );
selectLabel->setFixedHeight( 30 );
allLabel->setFixedHeight( 30 );
//End Label
nameTyp = "SSDFObjekt";
typ = new QListViewItem( allObjects, nameTyp );
for( anzahl=MAX_SSDFOBJEKT; anzahl>0; anzahl--) {
nameObject = "SSDFObjekt";
nameObject = nameObject.append( temp.setNum( anzahl ) );
object = new QListViewItem( typ, nameObject );
if ( !file.open( IO_ReadOnly ) ) {
msg = "Konfigurationsdatei '" + file.name() + "' kann nicht geöffnet werden.";
QMessageBox::warning(0, "Fehler beim Öffnen der Datei", msg, QMessageBox::Ok, 0);
}
while ( !ConfigFile.atEnd() ) {
zeile = ConfigFile.readLine();
zeichen = zeile.at(0);
empty = "";
switch ( zeichen ) {
case '%' : break;
case '+' :
{
nameGroup = empty;
i = 1;
while( i < zeile.length() ) {
nameGroup.append( zeile.at(i) );
i++;
}
group = new QListViewItem( object, allObjects->lastItem(), nameGroup );
} break;
default :
{
nameItem = empty;
i = 0;
while( i < zeile.length() ) {
nameItem.append( zeile.at(i) );
i++;
}
item = new QListViewItem( group, nameItem );
}
}
}
file.close();
}
ich bin neu auf dem Gebiet der Qt-Programmierung und versuche mir eine Liste aus den Einträgen einer cfg-Datei zu erstellen.
Allerdings werden die Einträge immer an der ersten Position der Liste eingefügt. (Daher auch die Rückwärtszählende For-Schleife)
Wie kann ich die Einträge an der letzten Stelle der Liste einfügen?
Mein verwendeter Quellcode sieht folgendermaßen aus:
QString msg, temp;
QFile file( "SSDFObjekt.cfg" );
QTextStream ConfigFile( &file );
QString zeile, empty, nameItem, nameObject, nameGroup
QString nameTyp;
QChar zeichen;
unsigned int anzahl;
QListViewItem *typ;
QListViewItem *object;
QListViewItem *group;
QListViewItem *item;
// ListView
selectObjects = new QListView( centralWidget(), "gewählte Objekte" );
selectObjects->addColumn( "Objekt" );
selectObjects->addColumn( "Typ" );
selectObjects->setMinimumHeight( LIST_HEIGHT );
selectObjects->setMinimumWidth( LIST_WIDTH );
selectObjects->setAllColumnsShowFocus( true );
allObjects = new QListView( centralWidget(), "mögliche Objekte" );
allObjects->addColumn( "Objekt" );
allObjects->addColumn( "Typ" );
allObjects->setMinimumHeight( LIST_HEIGHT );
allObjects->setMinimumWidth( LIST_WIDTH );
allObjects->setAllColumnsShowFocus( true );
allObjects->setSorting( -1 );
//End ListView
// Label
selectLabel = new QLabel( "<b>ausgewählte Objekte<b>", central, "selectLabel" );
allLabel = new QLabel( "<b>mögliche Objekte<b>", central, "allLabel" );
selectLabel->setFixedHeight( 30 );
allLabel->setFixedHeight( 30 );
//End Label
nameTyp = "SSDFObjekt";
typ = new QListViewItem( allObjects, nameTyp );
for( anzahl=MAX_SSDFOBJEKT; anzahl>0; anzahl--) {
nameObject = "SSDFObjekt";
nameObject = nameObject.append( temp.setNum( anzahl ) );
object = new QListViewItem( typ, nameObject );
if ( !file.open( IO_ReadOnly ) ) {
msg = "Konfigurationsdatei '" + file.name() + "' kann nicht geöffnet werden.";
QMessageBox::warning(0, "Fehler beim Öffnen der Datei", msg, QMessageBox::Ok, 0);
}
while ( !ConfigFile.atEnd() ) {
zeile = ConfigFile.readLine();
zeichen = zeile.at(0);
empty = "";
switch ( zeichen ) {
case '%' : break;
case '+' :
{
nameGroup = empty;
i = 1;
while( i < zeile.length() ) {
nameGroup.append( zeile.at(i) );
i++;
}
group = new QListViewItem( object, allObjects->lastItem(), nameGroup );
} break;
default :
{
nameItem = empty;
i = 0;
while( i < zeile.length() ) {
nameItem.append( zeile.at(i) );
i++;
}
item = new QListViewItem( group, nameItem );
}
}
}
file.close();
}