mehrzeilig Text markieren in qgraphicstextitem

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

mehrzeilig Text markieren in qgraphicstextitem

Beitrag von anno1988 »

Hallo,

geht es eigentlich im qgraphicstextitem auch mehrzeiligen Text der darin steht mit der Maus zu markieren.

Bisher habe ich es nur hinbekommen, wenn ich im Doppelklick-Event das TextInteractionFlag setze. Da kann ich dann eine eizelne Zeile per Doppelklick markieren.

Code: Alles auswählen

void MyTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
 {
     if (textInteractionFlags() == Qt::NoTextInteraction)
         setTextInteractionFlags(Qt::TextEditorInteraction);

     QGraphicsTextItem::mouseDoubleClickEvent(event);
 }
Ich denke dass ich da im mouseMoveEvent ein Flas setzen muss, ich weiß allerdings nicht genau welches.

Aber wie kann ich da einen mehrzeiligen text markieren?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Wieso im doubleClickEvent, und warum ableiten? Setz doch einfach das Qt::TextEditInteraction (oder Qt::TextBrowserInteraction, wenn der User den Text nicht ändern können soll), an der Stelle, wo du das QGraphicsTextItem erzeugst, das macht genau das was du willst.
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

Naja, ich habe es eben in dem DiagramScene Beispiel von Qt abgeschaut. Da wird es mit dem DoubleClick Event gemacht.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

anno1988 hat geschrieben:Naja, ich habe es eben in dem DiagramScene Beispiel von Qt abgeschaut. Da wird es mit dem DoubleClick Event gemacht.
Ist dir bewusst, warum in dem Beispiel das ganze so gemacht wird? Willst du das auch? Und in dem Beispiel geht übrigens das Markieren von mehrzeiligem Text mit der Maus auch. Wenn du den Code verstehst weißt du auch wie ;)
(Will dich nicht gängeln, sondern anspornen den Code zu verstehen.)
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

ok danke, das funktioniet soweit mal.

Allerdings eines würde mich noch interessieren.

Wenn ich im GraphicsView ein scale aufrufe und z.B. auf 400% skaliere, bleibt die Dicke der Umrandung des QGraphicsTextItem immer noch die selbe wie vorher.

Wie wird das denn gelöst?

Ich habe noch 2 Beispielbilder angehängt.
Dateianhänge
scale 1.00.png
scale 1.00.png (447 Bytes) 2312 mal betrachtet
scale 4.00.png
scale 4.00.png (1.12 KiB) 2312 mal betrachtet
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

anno1988 hat geschrieben:Allerdings eines würde mich noch interessieren.

Wenn ich im GraphicsView ein scale aufrufe und z.B. auf 400% skaliere, bleibt die Dicke der Umrandung des QGraphicsTextItem immer noch die selbe wie vorher.

Wie wird das denn gelöst?
Theoretisch liegen doch die Sourcen offen, oder? ;)
Sind mir aber jetzt selber etwas zu undurchdringlich, bin mir aber ziemlich sicher dass das über die levelOfDetail (der "options"-Parameter in der paint()) gemacht wird. Schau dir für ein einfaches Beispiel die "Chips"-Demo (kommt mit Qt) an, da werden die Chips auch unterschiedlich, je nach Zoom-Stufe, gemalt.
Antworten