Ich entwickle eine Qt-Anwendung und versuche, QTextEdit als label
mit langem Text ohne Bildlaufleiste zu verwenden. In meinem UI habe ich eine QScrollArea
und innerhalb davon möchte ich ein paar QTextEdit
Widgets platzieren, und ich möchte nur Scrollen innerhalb QScrollArea
verwenden. Problem ist, dass, egal wie ich versuche, die Größe QTextEdit
Größe ändern es scheint, es hat eine maximale Höhe und Schnitte von Text, auch wenn ich die Größe manuell einstellen und QTextEdit::size
gibt den richtigen Wert zurück.So passen Sie QTextEdit an den Inhalt an
Ich habe die gleiche Sache mit QLabel
und es funktioniert gut, aber in diesem Fall brauche ich einige Methoden, die nur in QTextEdit
zur Verfügung gestellt werden.
fand ich diesen Beitrag: Resizing QT's QTextEdit to Match Text Height: maximumViewportSize()
Und die Antwort gegeben war folgendes:
ich dieses Problem gelöst haben. Es gab 2 Dinge, die ich tun musste, um damit es funktioniert:
- das Widget Hierarchie Gehen Sie und stellen Sie sicher, die alle Größe Politik gemacht Sinn, um sicherzustellen, dass, wenn ein Kind-Widget wollte groß/klein sein dann würde das übergeordnete Widget dasselbe sein wollen.
- Dies ist die Hauptquelle des Updates. Da sich QTextEdit in einem QFrame befindet, das das Hauptwidget in einer QScrollArea ist, hat QScrollArea eine -Einschränkung, die das interne Widget nur dann skaliert, wenn die "widgetResizable" -Eigenschaft wahr ist. Die Dokumentation dafür ist hier: http://doc.qt.io/qt-4.8/qscrollarea.html#widgetResizable-prop. Die Dokumentation war mir nicht klar, bis ich mit dieser Einstellung herum spielte und es zur Arbeit brachte. In der Dokumentation scheint es, dass diese Eigenschaft nur Zeiten behandelt, in denen der Hauptscrollbereich die Größe eines Widgets (d. H. Von Eltern zu Kind) ändern möchte. Es bedeutet tatsächlich, dass, wenn das Hauptobjekt Widget im Bildlaufbereich immer die Größe ändern möchte (d. H. Kind zu Eltern), dann diese Einstellung auf True festgelegt werden muss. Also, die Moral der Geschichte ist , dass der QTextEdit-Code in overriding sizeHint korrekt war, aber die QScrollArea ignorierte den Wert aus dem Hauptrahmen sizeHint zurückgegeben.
Das Problem ist, dass ich keine Ahnung, wie die QTextEdit's
QScrollArea
zugreifen widgetResizable
zu ermöglichen. Kann mir jemand erklären, wie ich das erreichen oder eine andere Art der Größenanpassung vorschlagen kann, um den Inhalt perfekt anzupassen?
Vielen Dank für die Beantwortung, das Problem ist, dass zunächst alle "\ n" neue Zeilenzeichen nicht haben - Der Text ist Wort umwickelt. Zweitens ist das Problem, dass selbst wenn ich die richtige Größe kenne, es einen Punkt gibt, an dem QTextEdit nur eine Bildlaufleiste zur Verfügung stellt, anstatt größer zu werden - und das ist mein Problem. – madasionka
@madasionka Können Sie die Bildlaufleiste in irgendeiner Weise deaktivieren? –
Ja, indem Sie Folgendes festlegen: 'textEdit-> setVerticalScrollBarPolicy (Qt :: ScrollBarAlwaysOff)', aber dies ändert nichts an der Tatsache, dass ein Teil des Textes abgeschnitten ist. – madasionka