Probleme mit QTableWidget und einem Bearbeitungsdialog

Alles rund um die Programmierung mit Qt
Antworten
QTWIN07
Beiträge: 10
Registriert: 24. September 2007 19:34

Probleme mit QTableWidget und einem Bearbeitungsdialog

Beitrag von QTWIN07 »

Hallo,

ich habe ein Problem beim Programmieren. Zuerst einmal ich programmiere unter Linux mit KDevelop und Qt4. Nun zu meinem Problem. In meinem Programm möchte ich gerne Daten in ein QTablewidget schreiben und wenn ich auf eine Zeile der Tabelle doppelt klicke soll sich ein Dialog mit den Daten aus der Tabelle öffnen, der das Editieren der Zeile ermöglicht. Also das sich der Dialog öffnet klappt schon ->

Code: Alles auswählen

void GuiMain::on_tableWidget_cellDoubleClicked(int row)
{
	DvdDialog dvdd ( this );
	dvdd.exec();
}
, Daten kann ich nur teilweise oder garnicht in die Tabelle schreiben. wie bekomme ich es hin, dass die Daten, welche ich in meiner guimain.cpp anlegen will in die Tabelle gechrieben werden und ich später mit einem Dialog daraufzugreifen kann. Für die DVDs habe ich eine QList<CDvd> angelegt, diese funktioniert glaube ich auch nicht so richtig. Für das Einfügen in die Tabelle benutze ich die Funktion writeToTable(). Ich habe mal den kompletten Quelltext hochgeladen.

Bitte um Hilfe!

Vielen Dank

Lars
Dateianhänge
dvdverwaltung.zip
Fehlerbereiche sind auskommentiert.
(28.82 KiB) 141-mal heruntergeladen
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ich würde dem Dialog mitteilen, welche Row er benutzen soll, außerdem könntest duch auch gleich den QDataWidgetMapper benutzen, dann brauchst du dich nicht aufwendig um das auslesen der Row und das zurückschreiben kümmern.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Hier noch ein Verbesserungvorschlag für den DVD-Dialog.
Dateianhänge
dvddialog.ui
(4.83 KiB) 138-mal heruntergeladen
QTWIN07
Beiträge: 10
Registriert: 24. September 2007 19:34

Danke für die erste Antwort

Beitrag von QTWIN07 »

...werde mir mal den QDataWidgetMapper ansehen vielleicht hat ja noch jemand eine Vorschlag was ich verbessern könnte...
QTWIN07
Beiträge: 10
Registriert: 24. September 2007 19:34

Komme doch nicht so richtig weiter

Beitrag von QTWIN07 »

habe jetzt in der guimain.h den QDataWidgetMapper inkludiert und die Methode void setupModel() in h und cpp eingefügt. In der Tabelle habe ich mal Beispieldaten eingetragen. Nun komme ich aber leider doch nicht weiter, das mag daran liegen, dass ich noch ein Anfänger auf dem Gebiet bin.
Was muss ich jetzt in der setupModel() programmieren? Ich habe mir auch schon die doc's von Trolltech angesehen.

Gruß Lars
Dateianhänge
guimain.h
(2.82 KiB) 128-mal heruntergeladen
guimain.cpp
(3.54 KiB) 143-mal heruntergeladen
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Code: Alles auswählen

void GuiMain::on_tableWidget_cellDoubleClicked(int row)
{
        DvdDialog dvdd ( this );
        dvdd.exec();
}
Du gibtst die Row immer noch nicht an den Dialog weiter, warum nicht?

Der QDataWidgetMapper war für den Dialog gedacht, was willst du im MainWidget damit?
QTWIN07
Beiträge: 10
Registriert: 24. September 2007 19:34

nagut

Beitrag von QTWIN07 »

Also das was ich jetzt in der guimain eingefügt habe kommt eigentlich in die dvddialog Dateien, und wenn ich den DVDDialog aufrufe soll ich das per DvdDialog dvdd ( row ); an die Klasse übergeben. Gut dann werde ich das mal ändern.
QTWIN07
Beiträge: 10
Registriert: 24. September 2007 19:34

änderungen

Beitrag von QTWIN07 »

dvddialog.h:

Code: Alles auswählen

#include <QDataWidgetMapper>
//...
DvdDialog(int row, QWidget *parent = 0 );
//...
private:
	// Mapping data to dialog
	void setupModel();
//...
dvddialog.cpp:

Code: Alles auswählen

DvdDialog::DvdDialog ( int row, QWidget *parent )
//...
//Methode setupModel
guimain.cpp

Code: Alles auswählen

//...
void GuiMain::on_tableWidget_cellDoubleClicked(int row)
{
	DvdDialog dvdd ( row, this );
	dvdd.exec();
}
//...
Zu meiner vorherigen Frage, was müsste jetzt in setupModel hinein?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Dein Dialog weis jetzt welche Row aber nicht welches Model. Und Beispiele für den QDataWidgetMapper sind in der Doku zu finden.
QTWIN07
Beiträge: 10
Registriert: 24. September 2007 19:34

änderungen 2

Beitrag von QTWIN07 »

Bin heute noch nicht richtig weiter gekommen. Werde mir nochmal die Docu angucken. Änderungen habe ich mal in der txt zusammengefasst. Hatte noch einen Fehler im Konstruktor in CDvd habe ihn aber noch nicht vollständig korrigieren können und die Methoden hatte ich versehentlich in die falsche Klasse geschrieben.
Dateianhänge
nderungen.txt
(5.57 KiB) 137-mal heruntergeladen
nsd
Beiträge: 6
Registriert: 29. Oktober 2007 12:35

Beitrag von nsd »

Diese Problematik beschäftigt mich auch seit ner Woche :/ wobei ich sagen muss das ich den sinn des Mappers nicht ganz nachvollziehen kann.

Ich sag nur Roth und seine brilliante Hilfestellung :) Viel Glück
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

wobei ich sagen muss das ich den sinn des Mappers nicht ganz nachvollziehen kann.
Er erleichtert dir die Verknüpfung einer Modell-Zelle mit einem Widget. Vergleich mal die Code-Menge die du selbst schreiben mußt um die Verknüpfung zu erstellen. Bzw. ein eigener Code um eine Zelle auszulesen und zurückzuschreiben.
nsd
Beiträge: 6
Registriert: 29. Oktober 2007 12:35

Beitrag von nsd »

Nunja genau hier liegt das problem. Ich muss erstmal wissen wie ich aufm Basis lvl erstmal daten von nem Dialog in mainwidget kriege ... erst dann kann ich nachvollziehen was mit dem mapper ist :( ... jedoch bin ich schon der Lösung ziemlich nah (hoffe ich)
QTWIN07
Beiträge: 10
Registriert: 24. September 2007 19:34

Weitere Veraenderungen

Beitrag von QTWIN07 »

Neues Jahr, neuer Versuch!
So ich habe das Programm weitergeschrieben. Nun bin ich an dem Punkt, wo ich gerne mit Hilfe des Dialoges neue Datensätze in die Tabelle einfügen möchte. Wie bekomme ich das hin? Habe schon einen Menüpunkt eingefügt.
Gruß Lars
Dateianhänge
DVDVerwaltung.zip
(57.06 KiB) 132-mal heruntergeladen
Antworten