Seite 1 von 1
TableView
Verfasst: 19. Juni 2017 15:12
von pschnot1000
Hallo
Ich habe mir eine Tabelle in TableView erstellt. Durch anklicken lässt sich die Hintergrundfarbe jedes einzelnen Elements umstellen.
Jetzt möchte ich die Farbe des Feldes allerdings gern wieder auslesen.
Beim TableWidget konnte ich das über item->backgroundcolor machen.
Bei TableView hab ich allerdings noch nichts gefunden oder muss ich die Farbe über QStandartItemModel finden?
Danke
Re: TableView
Verfasst: 19. Juni 2017 17:18
von Christian81
Bei einem View ist ein Model dahinter. In deinem Fall wohl ein QStandardItemModel. Dort sind alle relvanten Daten gespeichert.
Re: TableView
Verfasst: 20. Juni 2017 07:24
von pschnot1000
Ja das weiß ich, hatte ich ja auch hingeschrieben.
Hab in der Dokumentation auch schon gesucht, aber noch nicht so richtig gefunden wie ich an die Hintergrundinformation einer Zelle komme.
Vlt. weiß jmd da noch was genaueres?
VG
Re: TableView
Verfasst: 20. Juni 2017 08:15
von Christian81
Die einzelnen QStandardItems haben doch sogar eine Funktion namens background() ...
https://doc.qt.io/qt-5/qstandarditem.html#background
Re: TableView
Verfasst: 20. Juni 2017 09:02
von pschnot1000
Hmm das stimmt. Danke.
Leider komm ich noch nicht so richtig zur Farbe.
Ich hab mir aus dem QStandardItemModel ein QStandardItem, welches auf den item index zugreift erzeugt.
und versuche jetzt über:
den QBrusch von Background in einen String umzuwwandeln. Jedoch kommt folgende Fehlermeldung:
Fehler: no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'QString')
^
Re: TableView
Verfasst: 20. Juni 2017 10:08
von pschnot1000
Hat sich erledigt.
Arbeite jetzt direkt mit dem QBrush von background().
Sicherheitshalber würde ich trotzdem noch gern wissen wollen, wie ich das konvertiere, da ich da immer Fehler hab.
Danke für den Tipp mit QStandardItem!
Re: TableView
Verfasst: 20. Juni 2017 17:21
von Christian81
Wenn man einen QString mittels std::cout ausgeben will, muss man ihn in die korrekte locale konvertieren -> QString::toLocal8Bit().data()