comparison src/gui/widgets/text.cpp @ 49:f4bea5ef5b8a

paragraph: fix size hint only tested on Linux (KDE)
author Paper <mrpapersonic@gmail.com>
date Mon, 25 Sep 2023 11:40:14 -0400
parents d0adc4aedfc8
children 10868c3fb2be
comparison
equal deleted inserted replaced
48:e613772f41d5 49:f4bea5ef5b8a
3 #include <QFrame> 3 #include <QFrame>
4 #include <QLabel> 4 #include <QLabel>
5 #include <QPixmap> 5 #include <QPixmap>
6 #include <QTextBlock> 6 #include <QTextBlock>
7 #include <QVBoxLayout> 7 #include <QVBoxLayout>
8 #include <QDebug>
8 9
9 namespace TextWidgets { 10 namespace TextWidgets {
10 11
11 Header::Header(QString title, QWidget* parent) : QWidget(parent) { 12 Header::Header(QString title, QWidget* parent) : QWidget(parent) {
12 setLayout(new QVBoxLayout); 13 setLayout(new QVBoxLayout);
161 } 162 }
162 163
163 /* highly based upon... some stackoverflow answer for PyQt */ 164 /* highly based upon... some stackoverflow answer for PyQt */
164 QSize Paragraph::minimumSizeHint() const { 165 QSize Paragraph::minimumSizeHint() const {
165 QTextDocument* doc = document(); 166 QTextDocument* doc = document();
166 long h = (long)(blockBoundingGeometry(doc->findBlockByNumber(doc->blockCount() - 1)).bottom() + 167 doc->adjustSize();
167 (2 * doc->documentMargin())); 168 long h = 0;
169 for (QTextBlock line = doc->begin(); line != doc->end(); line = line.next()) {
170 h += doc->documentLayout()->blockBoundingRect(line).height();
171 }
168 return QSize(QPlainTextEdit::sizeHint().width(), h); 172 return QSize(QPlainTextEdit::sizeHint().width(), h);
169 } 173 }
170 174
171 QSize Paragraph::sizeHint() const { 175 QSize Paragraph::sizeHint() const {
172 return minimumSizeHint(); 176 return minimumSizeHint();