Seite 1 von 1
QAbstractTableView eine QComboBox hinzufügen
Verfasst: 22. Oktober 2008 11:52
von reuabreliz
Also ich habe die QAbstractTableView abgeleitet (erfolgreich, was ziemlich ziemlich lange gedauert hat) Nun will ich als Item eine QCombobox ausgeben. Wie mache ich das.
Probiert habe ich es in der Funktion data() einfach eine QComboBox zurückzugeben, aber irgendwie gibt er mir dann keine QComboBox aus sonder es steht in dem Feld nur der Wert true. Textausgabe funktioniert aber.
Wollte fragen wie ich das nun mache. Wenn es wer nicht versteht bitte einfach fragen

Verfasst: 22. Oktober 2008 12:19
von upsala
Lies dir doch bitte mal die Doku zur Model/View-Programmierung durch...
Verfasst: 22. Oktober 2008 12:22
von AuE
setCellWidget(..) ??
aber verstehe deine frage/aussage nicht ganz.
was hast du genau. was meinst du mit ausgeben?
Verfasst: 22. Oktober 2008 12:47
von reuabreliz
Sorry war schlecht ausgedrückt. Meinte nicht ausgeben sondern zuweisen. In der Funktion data() im Herzstück wie mir gesagt wurde setze ich ja die spalten. In der ersten Spalte will ich nur QComboBox Items haben in der zweiten dann ganz normale Strings usw. Mir geht es hier nur um die erste Spalte. Text zuweisen indem ich mit return einfach einen QString zurückweise hat funktioniert. Aber wenn ich eine QComboBox zurückgeben also zuweisen will dann funktioniert das nicht: Es gibt dann wenn ich die Tabelle mit einem TableView ausgebe für diese ComboBox spalte nur den Wert true aus und nicht wie gewollt die ComboBox.
funktioniert nicht
Code: Alles auswählen
QVariant MyTableModel::data(const QModelIndex &index, int role) const
{
....
QComboBox cBox = new QComboBox();
cBox->addItem("test");
return cBox;
...
}
funktioniert
Code: Alles auswählen
QVariant MyTableModel::data(const QModelIndex &index, int role) const
{
....
QString str("test");
return str;
...
}
Verfasst: 22. Oktober 2008 12:53
von AuE
Die Doku sagt zum return Typen QVariant folgenden
A Note on GUI Types
Because QVariant is part of the QtCore library, it cannot provide conversion functions to data types defined in QtGui, such as QColor, QImage, and QPixmap. In other words, there is no toColor() function. Instead, you can use the QVariant::value() or the qVariantValue() template function. For example:
QVariant variant;
...
QColor color = variant.value<QColor>();
Kann mich erinnern das es da mal so ein Delegatenbeispiel gab wo man genausowas gemacht hat. Schau dir doch mal Doku/Assistant an... da müsstest du dieses Delegaten bsp finden
Glaube sogar das es auch dieses hier im Forum gibt.
Mein setCellWidget bezieht sich auf das QTableWidget. Also für dich nicht brauchbar
schau dir das mal an:
http://qtforum.de/forum/viewtopic.php?t=737
Verfasst: 22. Oktober 2008 13:53
von MichaelS
Du wirst nicht umhinkommen, Dich mit Delegates zu befassen. Die QT-Doku beschreibt das recht gut und liefert auch ein entsprechendes Beispiel:
http://doc.trolltech.com/4.4/model-view-delegate.html
Gruß Michael
Verfasst: 22. Oktober 2008 15:04
von reuabreliz
Heißt das meine Ableitung von QAbstractTableModel war um sonst? Und welche Delegate Klasse wäre für eine Tabelle am besten zum ableiten?
Verfasst: 22. Oktober 2008 15:10
von AuE
Verfasst: 22. Oktober 2008 18:18
von reuabreliz
Wenn ich das jetzt richtig verstanden habe ist das die Antwort auf all meine Fragen.

Also macht man indem man von QItemDelegate ableitet ein eigenes Item? Die Methode createEditor wäre dann wie bei QAbstractItemModel die Funktion data und setEditorData wie setData, usw. usf. oder?
Das heißt ich kann mit dieser Klasse jedes beliebige Item erstellen für ein Model?
Verfasst: 23. Oktober 2008 13:31
von reuabreliz
Habs jetzt mit dem ItemDelegate hinbekommen danke noch mal