Text über Bild legen (overlay?)

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Hallo Leute,

ich habe eine QTextBrowser und möchte darin neben Fließtext auch Bilder anzeigen, die dynamisch von Text überlagert sein sollen.

In HTML & CSS habe ich es so gelöst:

Code: Alles auswählen

<html><head>
  <style>
    .container {
      position: relative;
      text-align: center;
      color: black;
      font-weight: bold;
    }
    .centered {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
  </style>
</head><body>
  <p>Some text before.</p>
  <div class="container">
    <img src="image.png">
    <div class="centered"><h2>Text</h2></div>
  </div>
  <p>Some text after.</p>
</body></html>
In Qt scheint das nicht so einfach wie gedacht mit .setHtml() zu funktionieren. Der Text erscheint unterhalb des Bildes in einer eigenen Zeile.

In den Qt Docs finde ich hauptsächlich Infos zum Styling einzelner Elemente, nicht des Fließtextes bzw. wie beschrieben nur einzelnen Bildern darin.

Wer weiß Hilfe?
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.
__deets__
User
Beiträge: 14523
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich behaupte mal du kommst da an die Grenzen des QTextBrowsers. Das ist keine volle HTML-Layout-Maschine. Sondern ein Mittelgrund fuer die Anzeige von Hilfetexten etc. Wenn du die vollen styling-Moeglichkeiten von HTML willst, dann benutz QWebView ode wie die Klasse im Moment heisst.
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Wenn ich es richtig verstehe, ist das Problem bei QWebView, dass es keine lokalen Bilder laden will
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.
__deets__
User
Beiträge: 14523
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich muesste dazu jetzt erstmal selbst durch QWebview buddeln. Salopp gesagt kann man natuerlich auch immer die nukleare Option waehlen, und in Python auch gleichzeitig einen webserver laufen lassen ;) Elegant ist anders, aber gehen tut's.

Und https://doc.qt.io/qt-5/qwebengineview.html#setContent zb suggeriert, das sowas geht.
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Ich habe es jetzt mit einem QPainter bzw. dessen drawText Funktion gelöst, mit der ich dynamisch Text auf einem QImage hinzufügen kann.

Es fehlt nur noch eine Lösung, um den Text zusätzlich so bekannt zu geben, dass auch sichtbehinderte Personen ihn entziffern können.
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.
__deets__
User
Beiträge: 14523
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann viel Spaß beim lesen ;) https://doc.qt.io/qt-5/accessible.html
Antworten