QTextEdit mit zentriertem Text

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Auerhahn
User
Beiträge: 31
Registriert: Dienstag 23. Juli 2019, 06:48

Ich benötige ein Eingabefeld, in dem der Text zentriert ist. Mit QLineEdit ist das ganz leicht, aber das Feld, das ich benötige, muss mindestens zwei Zeilen aufnehmen können. QTextEdit kann das, aber da scheint es keine Möglichkeit zu geben, den Text im Feld zu zentrieren. Jedenfalls habe ich bei meiner Recherche viele Anfragen dieser Art gefunden, aber aber es scheint keine Lösung für das Problem zu geben. Oder doch? Kann jemand einen Tip geben, wo ich so etwas finden kann?
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Also grundsätzlich ist Text zentrieren möglich. Eventuell musst Du Code schreiben der bei der Eingabe prüft das der Text auch wirklich zentriert ist und das gegebenfalls anpassen. Ich würde aber als erstes mal versuchen dem Textdocument ein Stylesheet zu verpassen bei dem Absätze ein ``align: center`` haben. Vielleicht reicht das ja schon.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Auerhahn
User
Beiträge: 31
Registriert: Dienstag 23. Juli 2019, 06:48

Wenn ich den Text zentriere, was tatsächlich funktioniert, wird er in HTML umgewandelt. Ich will aber, dass reiner Text lediglich zentriert angezeigt wird, nicht dass er verändert wird. Das scheint tatsächlich unmöglich zu sein. Auch bei weiterer Suche hat sich die Frage im Netz ziemlich häufig gefunden, aber keine Antwort außer der, dass das nicht geht.
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Aber dann hol den Text aus dem HTML doch einfach raus. Das Qt das so macht, ist ja nicht ungewoehnlich - irgendwie muss man so eine "reiche" Formatierung ja darstellen. Denn der naechste will die erste Zeile links, die zweite rechts, und die dritte zentriert.
Auerhahn
User
Beiträge: 31
Registriert: Dienstag 23. Juli 2019, 06:48

Das ist nicht so einfach, wie es sich anhört. Die entsprechenden Felder sind über ein DatenModell mit einer Datenbank verbunden. Ich wüsste im Moment nicht, wie ich verhindern kann, dass der Feldinhalt in die Datenbank geschrieben wird. Und mir scheint, dass es dann die Verwendung des Modells sinnlos macht. Mir scheint aber auch grundsätzlich, dass es nicht so geschickt ist, die Daten zu verändern, damit sie anders dargestellt werden. Denn ich will ja nicht, dass es andere sind, sondern nur, dass die anders aussehen. Ich kann mir gar nicht vorstellen, dass ds unmöglich ist, aber es sieht ja fast so aus...
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Auerhahn: Unmöglich sicher nicht. Die Frage ist wie viel Aufwand man betreiben möchte. Wenn man bei objektorientierter Programmierung einen Datentyp hat der sich fast so verhält wie man das möchte, kann man in der Regel ja versuchen einen Typ davon abzuleiten der sich so verhält wie man das möchte. Müsste man halt schauen wo man da am besten ansetzt. Beim Textfeld, der Verbindung zum Modell, dem Modell selbst…
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Auerhahn hat geschrieben: Mittwoch 26. Oktober 2022, 12:32 Das ist nicht so einfach, wie es sich anhört. Die entsprechenden Felder sind über ein DatenModell mit einer Datenbank verbunden. Ich wüsste im Moment nicht, wie ich verhindern kann, dass der Feldinhalt in die Datenbank geschrieben wird. Und mir scheint, dass es dann die Verwendung des Modells sinnlos macht. Mir scheint aber auch grundsätzlich, dass es nicht so geschickt ist, die Daten zu verändern, damit sie anders dargestellt werden. Denn ich will ja nicht, dass es andere sind, sondern nur, dass die anders aussehen. Ich kann mir gar nicht vorstellen, dass ds unmöglich ist, aber es sieht ja fast so aus...
Das es beim lesen und schreiben von Daten zu Transformationen kommt zum Zweck der Darstellung und dem abspeichern, ist nicht die Ausnahme, sondern die Regel. Oder glaubst du, dass die 32 bit an Zahlwert ohne Transformation zu einer Reihe von Textzeichen werden? Gleiches gilt fuer Datumswerte, Binaerdaten wie Bilder, etc. pp.

Wo auch immer da nun genau bei dir der beste Ansatz ist, kann man mangels Kontext schwer sagen. Aber oft bieten ORMs oder MVC Implementierungen da Moeglichkeiten, sich reinzuhaengen.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Verstehe ich deine Fragestellung falsch oder hast du https://doc.qt.io/qt-6/qtextedit.html#setAlignment übersehen...?
Auerhahn
User
Beiträge: 31
Registriert: Dienstag 23. Juli 2019, 06:48

Das habe ich nicht übersehen, aber Deine Frage. Sie soll, wenn auch verspätet, nicht unbeantwortet bleiben. Die Antwort ist: Auch wenn die Annahme nahelag: Ich habe diese Option ich nicht übersehen. Aber es ist nicht, was ich suche. Ich möchte, dass der Text, der aus einer Datenbank stammt, in einem Editor zentriert dargestellt wird, nicht, dass ihm die Tags hinzugefügt werden, die ihn zu einem HTML-Text machen, der zentriert dargestellt wird. Mit anderen Worten: Ich möchte ein Editierfeld, das seinen Inhalt zentriert (oder auch rechtsbündig. usw.) darstellt, nicht eine Möglichkeit, einzelne Absätze zentriert usw. zu formatieren. Das scheint es so nicht zu geben.
(Ich habe aber schon eine andere Lösung meines Problems gefunden, so dass es erst mal erledig ist.)
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Für zukünftig Suchende wäre natürlich spannend zu wissen, wie deine Lösung konkret aussieht, vor allem wenn im Netz bisher zwar oft die Frage aufkam, aber als Lösung nur "geht nicht" dabei stand.. :mrgreen:
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Auerhahn
User
Beiträge: 31
Registriert: Dienstag 23. Juli 2019, 06:48

Ich habe mich missverständlich ausgedrückt. Ich habe eine Möglichkeit gefunden, dieses anscheinend unlösbare Problem zu umgehen. Also keine Lösung gefunden.
Antworten