Problem: Chcę zaimplementować widget edytowania tekstu dla tekstu z dodatkowymi tagami. Chciałbym, aby niektóre znaczniki były niewidoczne w niektórych przypadkach, aby nie rozpraszały użytkownika.Ukrywanie tekstu za pomocą narzędzia QSyntaxHighlighter
Środowisko: Używam PyQt
i wolą korzystać QPlainTextWidget
i QSyntaxHighlighter
.
Podejście: Z QSyntaxHighlighter
mogę ustawić QTextCharFormat
dla ciągów pasujących do mojego wymagania. QTextCharFormat
dał mi wszystkie właściwości czcionki, takie jak rozmiar, kolory itp. , ale: Nie znalazłem opcji, aby ukryć tekst lub zmniejszyć jego rozmiar do zera.
Nie chcę usuwać ani zastępować tagów, ponieważ wprowadzi to znacznie więcej kodu (kopiowanie powinno zawierać znaczniki i nie mogę używać QSyntaxHighlighter
do formowania pozostałego tekstu zgodnie z tagami).
Aktualizacja: Do tej pory znalazłem brzydki hack. Po ustawieniu wartości QTextFormat :: FontLetterSpacing na małą wartość tekst będzie zużywał coraz mniej miejsca. W połączeniu z przezroczystym kolorem tekst jest niewidoczny.
Problem: W moim teście zadziałało to tylko dla odstępów między literami do 0,016%. Poniżej odstępy są resetowane do 100%.
No tekstowy jest tekstowym. Spróbuj użyć widgetu innego niż zwykły. –
Nie znalazłem odpowiednich opcji w 'QTextEdit'. AFAIK różnica jest ograniczona do zachowania przewijania, tabel, ramek i rzeczy takich jak obrazy. Funkcje, które mogą umożliwić ukrywanie tekstu, są takie same, jak w 'QPlainTextEdit'. Poza tym istnieje więcej bardziej zaawansowanych klas wewnątrz Qt. QScintilla oznaczałoby użycie czegoś zupełnie innego. – m2j