QAbstractTableView eine QComboBox hinzufügen

Alles rund um die Programmierung mit Qt
Antworten
reuabreliz
Beiträge: 86
Registriert: 4. Oktober 2008 17:06

QAbstractTableView eine QComboBox hinzufügen

Beitrag 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 :)
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Lies dir doch bitte mal die Doku zur Model/View-Programmierung durch...
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

setCellWidget(..) ??

aber verstehe deine frage/aussage nicht ganz.

was hast du genau. was meinst du mit ausgeben?
reuabreliz
Beiträge: 86
Registriert: 4. Oktober 2008 17:06

Beitrag 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;
...
}
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Beitrag 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
reuabreliz
Beiträge: 86
Registriert: 4. Oktober 2008 17:06

Beitrag 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?
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

nein....

schau dir doch das Bsp an http://qtforum.de/forum/viewtopic.php?t=737
reuabreliz
Beiträge: 86
Registriert: 4. Oktober 2008 17:06

Beitrag von reuabreliz »

Wenn ich das jetzt richtig verstanden habe ist das die Antwort auf all meine Fragen. :D
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?
reuabreliz
Beiträge: 86
Registriert: 4. Oktober 2008 17:06

Beitrag von reuabreliz »

Habs jetzt mit dem ItemDelegate hinbekommen danke noch mal
Antworten