Seite 1 von 1

[gelöst] QDialog als Delegate - Problem mit QLineEdit

Verfasst: 10. Juni 2006 20:54
von dhcase
Hallo,
ich habe, basierend auf dem "Simple DOM Model Tutorial", ein XML-Model erstellt, dessen View die XML-Daten in einer Baumstruktur darstellt. Beim Doppelklick auf ein Element soll sich ein QDialog öffnen, über den die verschiedenen Attribute eines XML-Tags verändert werden können. Das funktioniert soweit auch. Allerdings sollen die Attribut-Werte in ein LineEdit eingetragen und dort verändert werden können (soll später eine ComboBox werden) und dabei stürzt das Programm in der Zeile

Code: Alles auswählen

Q_DECLARE_PRIVATE(QLineEdit)
der Datei "qlineedit.h" ab.

Hier ist der entsprechende Codeabschnitt des Delegate:

Code: Alles auswählen

DomItem *parentItem;
parentItem = static_cast<DomItem*>(index.internalPointer());
//...
QLineEdit *lineEdit = static_cast<QLineEdit *>(editor->findChild<QLineEdit *>("lineEdit"));
lineEdit->insert(parentItem->node().toElement().attribute("type"));
//...
Wie kann ich die Daten in das LineEdit einfügen, auch wenn es als private deklariert ist?

Danke schonmal im Voraus!
D.

Verfasst: 13. Juni 2006 09:54
von dhcase
Ich habe mir das ganze mal im Debugger angeschaut, und das Problem scheint in der Zeile

Code: Alles auswählen

QLineEdit *lineEdit = static_cast<QLineEdit *>(editor->findChild<QLineEdit *>("lineEdit"));
zu liegen. Der Aufruf liefert Null zurück, ich komme also nicht an das LineEdit im Dialogfenster ran. Ich habe auch schon versucht zuerst das Layout per findChild() aufzurufen und dann das Widget, das klappt aber auch nicht.
Welche anderen Möglichkeiten gibt es denn, ein Widget in einem Dialog zu finden, wenn findChild() nicht funktioniert? Oder ist an meinem Ansatz prinzipiell etwas falsch? Bin für jede Hilfe dankbar!

Verfasst: 13. Juni 2006 10:04
von macman
Mag ne dumme Frage sein, aber heißt dein LineEdit wirklich "lineEdit" oder hast Du ihm einen anderen oder gar keinen Namen gegeben?

Verfasst: 13. Juni 2006 10:32
von dhcase
das heisst wirklich lineEdit, nicht besonders kreativ aber es sollte ja nur zum testen sein... ich habs auch schon mit einer ComboBox versucht, die heisst "cb" und das klappt leider auch nicht!

Verfasst: 13. Juni 2006 20:04
von dhcase
hey macman, du hattest recht, ich habe dem lineEdit keinen Namen gegeben, setObjectName() hat das Problem gelöst *freu*