Wie platziere ich das QTableWidgetItem Icon in der Mitte der Zelle?

8

Ich möchte, dass eine Tabellenzelle nur ein Symbol ohne Text enthält.

Ich sehe, dass die QTableWidgetItem -Klasse eine Methode hat, um den Text ( int QTableWidgetItem::textAlignment () const )

auszurichten

Ich finde keine Möglichkeit, die Position des Symbols anzupassen (das links zu hängen scheint - selbst dort, wo sich kein Text in der Zelle befindet)

Sehen Sie sich die Spalten Status und Energie an.

Alternativtext http://i35.tinypic.com/2gx2tj5.png

    
random guy 10.11.2009, 13:27
quelle

6 Antworten

8

Sie können die Position des Symbols in Bezug auf den Text über die Stiloptionen beeinflussen.

Wenn das QTableWidgetItem ohne Text erstellt wird (über den Konstruktor, der kein Textargument akzeptiert), wird das Datenelement Qt :: DisplayRole nicht festgelegt, und der Text wird weder angezeigt noch wirkt es sich auf das Rechteck der Symbolanzeige aus .

Ich konnte die Position des QTableWidgetItem-Symbols beeinflussen, indem ich das QTableWidget-Objekt abzweigte, die viewOptions-Methode überschrieb und das Feld decorationAlignment der Ansichtsoptionen wie folgt einstellte:

%Vor%     
Avalanchis 30.11.2009, 20:28
quelle
6

Ich hatte ein ähnliches Problem, das ich ohne Sub-Classing gelöst habe, indem ich ein QLabel als cellwidget verwendet habe (leider musste ich auch ein Layout verwenden):

%Vor%

Ich habe den folgenden Ansatz verwendet:
Ссылка

    
Spiek 29.05.2015 18:48
quelle
2

Ich denke, es ist das grundlegende Verhalten von QTableWidgetItem, das es nicht erlaubt, irgendetwas in Bezug auf das Icon zu ändern ...

Sehen Sie sich das Beispiel "Star Delegate Example" von Qt an, vielleicht finden Sie etwas interessantes für Ihr Problem! Es ist ein bisschen Arbeit, aber Sie sollten in der Lage sein, die Zelle auf eine andere Weise zu zeichnen, wenn sie keinen Text enthält!

Hoffe, dass diese Hilfe ein bisschen hilft!

    
Andy M 10.11.2009 13:35
quelle
1

Es scheint, dass Sie QTableWidgetItem ableiten und die Funktion paintEvent neu schreiben müssen, wo Sie sind in der Lage, das Symbol zu zeichnen, wo Sie möchten.

    
Patrice Bernassola 10.11.2009 13:49
quelle
1

Sie können: setCellWidget wie folgt verwenden:

%Vor%

Damit wird das Symbol in die Mitte gesetzt

    
Tarek.Mh 25.08.2016 12:05
quelle
0

Sie müssen einen Delegaten verwenden

    
cheez 10.11.2009 14:43
quelle

Tags und Links