PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Qt: QListView mit dem Inhalt von QStringList



chapaev
27-01-2005, 23:16
Hi Leute!

Ich habe ein Problem mit QListView. Ich habe eine QStringList variable die aus mehreren zeilen besteht wie kann ich den Inhalt von QStringList ins QListView transportieren.
Bei vielen Pogrammen (exemple von qt) habe ich gesehen, dass

for (i .......)
{
.....
}
methode benutzt wird. Leider komme ich damit nicht klar. :(

Vielen dank im Voraus!

Chapaev

peschmae
28-01-2005, 06:33
Inwiefern kommst du damit nicht klar? Kopier doch einfach das Beispiel aus der Doku:


QStringList fonts;
for ( QStringList::Iterator it = fonts.begin(); it != fonts.end(); ++it ) {
cout << *it << ":";
}

statt dem Cout machst du halt was in der Richtung von


new QListviewItem(listViewPointer, *it);


MfG Peschmä

chapaev
28-01-2005, 21:26
Entschuldegung das ich so spät antrworte!
Danke Hat wunderbar geklappt! ;)

chapaev
02-02-2005, 11:54
Hi leute!

ich habe heute festgestellt das meine QListView inhalt automatisch sotriert :eek:

wie kann ich sortierung ausschalten? (designet with QT Designer)

Hier ist meine code (diese code ist für den inhalt der QListView verantwortlich)


void CharTrans::updateCharList( const QString &myString )
{
QStringList allList = QStringList::split("\n", myString);
charView->clear();
for ( QStringList::Iterator it = allList.begin(); it != allList.end(); ++it )
{
QString oldChar = *it;
oldChar.replace(QRegExp("=(.*)$"), "");
QString newChar = *it;
newChar.replace(QRegExp("^(.*)="), "");
new QListViewItem( MyQlistView, oldChar, newChar );
}
}

Ich selbst konnte hier keine Fehler entecken.
Deshalb nehme ich an, dass es an QListWiev liegt.

MfG

chapaev

peschmae
02-02-2005, 12:08
Guck mal im Qt Assistant vorbei :)


void QListView::setSorting ( int column, bool ascending = TRUE ) [virtual]

Sets the list view to be sorted by column column in ascending order if ascending is TRUE or descending order if it is FALSE.

If column is -1, sorting is disabled and the user cannot sort columns by clicking on the column headers. If column is larger than the number of columns the user must click on a column header to sort the list view.


Also machst du ein MyQlistView->setSorting(-1); um das automatische sortieren abzuschalten.


Und ich würde mir angewöhnen Klassennamen mit Grossbuchstaben und Variablennamen mit Kleinbuchstaben zu beginnen. Auch wenn das "nur" eine Konvention ist die man auch nicht beachten kann. Schafft aber imo Klarheit.
MyQlistview ist besonders "böse" weil die Originalklasse QListView heisst und nicht QlistView. Am besten also imo myQListView als Namen verwenden oder auch nur listView.


MfG Peschmä

chapaev
02-02-2005, 14:47
Ich habe es so gemacht wie du gesagt hast


MyQlistView->setSorting(-1);
so siht es dann aus:


void CharTrans::updateCharList( const QString &myString )
{
QStringList allList = QStringList::split("\n", myString);
charView->clear();
MyQlistView->setSorting(-1);
for ( QStringList::Iterator it = allList.begin(); it != allList.end(); ++it )
{
QString oldChar = *it;
oldChar.replace(QRegExp("=(.*)$"), "");
QString newChar = *it;
newChar.replace(QRegExp("^(.*)="), "");
new QListViewItem( MyQlistView, oldChar, newChar );
}
}
Liste wird nicht mehr sortiert, :) aber angezeigt wird die von unten nach oben also umgekehrt :confused:

Warum eigendlich?

MfG

chapaev

chapaev
02-02-2005, 16:58
Ich habe verstanden warum das so ist! ;)
diese code

void CharTrans::updateCharList( const QString &myString )
{
QStringList allList = QStringList::split("\n", myString);
MyQlistView->clear();
MyQlistView->setSorting(-1);
for ( QStringList::Iterator it = allList.begin(); it != allList.end(); ++it )
{
QString oldChar = *it;
oldChar.replace(QRegExp("=(.*)$"), "");
QString newChar = *it;
newChar.replace(QRegExp("^(.*)="), "");
new QListViewItem( MyQlistView, oldChar, newChar );
}
}
fügt jedes mal eine zeile am Anfang der liste :rolleyes:

also habe ich das Auslesen von QStringList rückwerts gemacht

void CharTrans::updateCharList( const QString &myString )
{
QStringList allList = QStringList::split("\n", myString);
MyQlistView->clear();
MyQlistView->setSorting(-1);
for ( QStringList::Iterator it = allList.end(); it != allList.begin(); --it )
{
QString oldChar = *it;
oldChar.replace(QRegExp("=(.*)$"), "");
QString newChar = *it;
newChar.replace(QRegExp("^(.*)="), "");
new QListViewItem( MyQlistView, oldChar, newChar );
}
}

klappt prima!

MfG

chapaev