[gelöst] Sortieren von Zahlen in QTable

Alles rund um die Programmierung mit Qt
Antworten
sdaub
Beiträge: 20
Registriert: 24. November 2004 09:31

[gelöst] Sortieren von Zahlen in QTable

Beitrag von sdaub »

Hallo,
habe das Problem, das QTable nur Strings richtig sortiert, ich müsste eine Spalte mit Zahlen sortieren. Wenn ich die Zahl umwandle mit führenden Nullen (also aus 4,50 wird 0000450) dann klappt das, schaut aber nicht gut aus. Sobald man die führenden Nullen wieder rückgängig macht, wird leider neu sortiert.

Danke für eure Tipps

Steffen
Spring-Daniel
Beiträge: 40
Registriert: 4. Oktober 2004 16:26

Beitrag von Spring-Daniel »

Qt-Doku von QTableItem sagt dazu:
When sorting table items the key() function is used; by default this returns the table item's text(). Reimplement key() to customize how your table items will sort.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Oder füge den Zahlenwert + Zahl X, das alle die gleiche länge haben als nicht sichtbare Spalte an und Sortiere nach der Spalte. Das kann man auch in qlistview machen.
Zuletzt geändert von FlorianBecker am 4. Oktober 2005 10:48, insgesamt 1-mal geändert.
sdaub
Beiträge: 20
Registriert: 24. November 2004 09:31

Danke

Beitrag von sdaub »

Der Tipp mit den vesteckten Spalten war echt super, so konnte ich meine Lösung ohne Probleme in ein paar Minuten ändern und es funktioniert.

Danke
Steffen
Spring-Daniel
Beiträge: 40
Registriert: 4. Oktober 2004 16:26

Beitrag von Spring-Daniel »

Immer diese faulen Tricks statt sauberem Design, so kann das ja nie was werden (:
sdaub
Beiträge: 20
Registriert: 24. November 2004 09:31

sauberes Desgin....

Beitrag von sdaub »

Da hast du schon recht, aber es funktioniert halt....
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Naja, also so faul ist der Trick nicht, selbst in den Qt Examples wird es mit QListView so verwendet, wie ich es gesagt habe. In QTable mag das anders sein, aber meine Einstellung ist immer die folgende:
1. Es muss funktionieren
2. Es muss leicht verständlich für andere sein
3. Qt ist auch nicht perfekt
4. Warum mach ich nichtmal wieder einen Code Clean Up.
Zuletzt geändert von FlorianBecker am 4. Oktober 2005 10:48, insgesamt 1-mal geändert.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Was ist denn so schwierig daran, key() zu reimplementieren?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Programmierer sind faul.
Zuletzt geändert von FlorianBecker am 4. Oktober 2005 10:48, insgesamt 1-mal geändert.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

:)
Christoph
Beiträge: 24
Registriert: 29. März 2005 15:22
Wohnort: Muenchen

Sortierproblem durch Reimplementierung von QTableItem::key

Beitrag von Christoph »

Hallo,

ich hatte ebenfalls ein Problem mit der Sortierung,
ich habe es durch die Reimplementierung von QString QTableItem::key () const geloest.

Der Ansatz in meinem Fall war, daß ich in meiner Tabellemanche Spalten numerisch,
andere aber alphabetisch sortieren möchte, auch wenn die Zellen in diesn Spalten teilweise oder ausschließlich Zahlen enthalten.

So sieht meine Lösung aus:

Code: Alles auswählen

QString QTableItem::key () const
{
	bool string_to_double_ok;
	
	// Die Spalten 3, 4 und 5 sollen numerisch sortiert werden, alle anderen Spalten alphabetisch
	if (QTableItem::col() == 3 || QTableItem::col() == 4 || QTableItem::col() == 5 )
	{	 
		// Den im QTableItem enthaltenen Text in eine Double konvertierten und mit führenden Nullen auf 16 Stellen auffuellen
		QString sortierstring = QString().sprintf("%016f", QTableItem::text().toDouble(&string_to_double_ok));
		return(sortierstring);
	}
	else
	{
		return (QTableItem::text());
	}
}
Mag nicht schön sein, aber es macht was ich will

Viele Grüße

Christoph
Antworten