Seite 1 von 1

QTableWidget umbauen

Verfasst: 29. April 2008 14:25
von jd
Hallo Gemeinde,

ich habe ein Problem mit dem QTableWidget. Ich habe eine menge Daten in meiner DB stehen... Es handelt sich hierbei um eine Kundendatenbank.

Zu jedem Kunden gibt es 82 Daten. Also beschränke ich meine Übersicht auf die Stammdaten. Realisiert habe ich das folgender maßen:

Stammdaten

Code: Alles auswählen

void CKundenDialog::selectKunden() {
	kundenTableWidget->setRowCount(5);
	kundenTableWidget->setColumnCount(7);

	QSqlQuery query;
	query.prepare("SELECT kundennummer, matchcode, firma, name, vorname, plz, ort FROM kunden LIMIT 5");
	query.exec();
	int count = 0;

	while (query.next()) {
		QString kundennummer = query.value(0).toString();
		QString matchcode = query.value(1).toString();
		QString firma = query.value(2).toString();
		QString name = query.value(3).toString();
		QString vorname = query.value(4).toString();
		QString plz = query.value(5).toString();
		QString ort = query.value(6).toString();

		QTableWidgetItem *newKundenNummer = new QTableWidgetItem(kundennummer);
		kundenTableWidget->setItem(count, 0, newKundenNummer);

		QTableWidgetItem *newMatchcode = new QTableWidgetItem(matchcode);
		kundenTableWidget->setItem(count, 1, newMatchcode);

		QTableWidgetItem *newFirma = new QTableWidgetItem(firma);
		kundenTableWidget->setItem(count, 2, newFirma);

		QTableWidgetItem *newName = new QTableWidgetItem(name);
		kundenTableWidget->setItem(count, 3, newName);

		QTableWidgetItem *newVorname = new QTableWidgetItem(vorname);
		kundenTableWidget->setItem(count, 4, newVorname);

		QTableWidgetItem *newPlz = new QTableWidgetItem(plz);
		kundenTableWidget->setItem(count, 5, newPlz);

		QTableWidgetItem *newOrt = new QTableWidgetItem(ort);
		kundenTableWidget->setItem(count, 6, newOrt);

		count++;
	}
}
Das funktioniert auch soweit, dies will ich dann noch auf QSqlTableModel umbauen, habe ich aber nicht gemacht da QTableView keine Signale hat, was mich zu meinem weiteren Problem führt. Da in dem QTableWidget nur die Stammdaten stehen, brauche ich eine Funktion, wo ich mir den Rest anzeigen kann. Leider finde ich kein Signal, was mir die Row-Zahl übergibt. Suche so was, wie Current-Selected-Row... Dann weiß ich von welchem Datensatz man mehr Informationen sehen will.

Kann mir jemand einen Tipp geben, wie ich das realisieren kann?

so long
jd

Verfasst: 29. April 2008 15:08
von jd
Hallo, mein Problem war/ist das ich den Aufbau von QTableWidget nicht verstanden habe, mit den Items...

Ich habe jetzt ein connect hinzugefügt:

Code: Alles auswählen

connect(kundenTableWidget, SIGNAL( cellDoubleClicked ( int row, int column  ) ),
			this, SLOT( showMore( int row, int column ) ));

Von da aus, kann ich wunder bar auf das Item schließen, was ich benötige, jedoch bekomme ich eine Fehlermeldung:
Object::connect: No such signal QTableWidget::cellDoubleClicked(int row,int column)
Object::connect: (sender name: 'kundenTableWidget')
Object::connect: (receiver name: 'KundenDialog')
Wie kann das sein? Das Signal steht so in der Doku: http://doc.trolltech.com/4.3/qtablewidg ... bleClicked

Was ist an meinem connect falsch?

so long

Verfasst: 29. April 2008 15:28
von solarix

Verfasst: 29. April 2008 15:39
von jd
Ok, aber ich verstehe es nicht, was ich jetzt machen soll... Muss ich jetzt mein eigenes Signal schreiben? Weil er findet ja das Signal nicht. Aber wie schreibe ich das Signal? Bzw. Warum funktioniert da keine Normale Singal-Slot Kombination?

so long

Verfasst: 29. April 2008 15:48
von solarix
Ich versuche es nochmals.. Trolltech hat sich die Mühe gemacht, eine Doku zu schreiben (mein obiger Link). In dieser Doku wird ganz genau dein Fall beschrieben.. Da hats ein Beispiel fuer ein connect() und dann noch ein Beispiel wie es NICHT (!!) gemacht werden soll.

Frage 1: worin liegt der Unterschied?
Frage 2: wie hast du's implementiert?