Seite 1 von 1

[gelöst] Sortieren von Zahlen in QTable

Verfasst: 2. Dezember 2004 09:55
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

Verfasst: 2. Dezember 2004 10:51
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.

Verfasst: 2. Dezember 2004 10:59
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.

Danke

Verfasst: 2. Dezember 2004 13:56
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

Verfasst: 2. Dezember 2004 15:03
von Spring-Daniel
Immer diese faulen Tricks statt sauberem Design, so kann das ja nie was werden (:

sauberes Desgin....

Verfasst: 3. Dezember 2004 09:09
von sdaub
Da hast du schon recht, aber es funktioniert halt....

Verfasst: 3. Dezember 2004 11:00
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.

Verfasst: 3. Dezember 2004 11:08
von lepsai
Was ist denn so schwierig daran, key() zu reimplementieren?

Verfasst: 3. Dezember 2004 11:09
von FlorianBecker
Programmierer sind faul.

Verfasst: 3. Dezember 2004 11:11
von lepsai
:)

Sortierproblem durch Reimplementierung von QTableItem::key

Verfasst: 3. Oktober 2005 18:43
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