In Qt-Version 6.9 habe ich den folgenden Code geschrieben, um das QWebEnginePage-Verhalten zu überschreiben:
Code: Select all
from PyQt6.QtWebEngineCore import QWebEnginePage
from urllib.parse import urlparse
import markdown2
class MyView(QWebEnginePage):
def acceptNavigationRequest(self, qurl, navtype, mainframe) -> bool:
parse_info = urlparse(qurl.url())
if parse_info.scheme.lower() == "file":
if parse_info.path.lower().endswith(".md"):
my_html = markdown2.markdown_path(parse_info.path)
self.setHtml(myhtml,
baseUrl=qurl)
return False
Heute wurde mein System auf Qt 6.10 aktualisiert. Derselbe Code führt jetzt zum Absturz der Anwendung (keine Meldung – Exit-Code 133). Ein Blick auf die Qt 6.10-Seite „Was hat sich geändert“ gibt keinen Aufschluss darüber, warum – zumindest für mich.
Ich kann beweisen, dass der setHTML-Aufruf die Ursache für den Absturz ist, indem ich ihn auskommentiere. In diesem Fall „funktioniert“ die Anwendung (gibt aber rohen Markdown wieder, der nur einfacher Text ist).
Die Frage lautet also: Wie kann eine URL richtig abgefangen und der anzuzeigende HTML-Inhalt ersetzt werden?
Mobile version