Название: Высота QTextEdit в соответствии с тектом Отправлено: yarick от Октябрь 03, 2012, 21:52 Я хочу выводить мой текст как серию из абзацев, каждый из которых представлен QTextEdit (не спрашивайте почему).
Как мне узнать фактическую высоту текста, чтобы потом с помощью setFixedHeight установить высоту абзаца. Тогда за ним будет по порядку следовать другой и текст будет выглядеть как будто это один компонент. через Код: QFontMetrics m (font()) ; Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: V1KT0P от Октябрь 03, 2012, 22:06 Код Возвращает максимальную высоту текста для текущего шрифта. Вот описание: Код А вот то что ты используешь: Код И Код Как говорится выбирай на любой вкус. Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: Alex Custov от Октябрь 03, 2012, 23:08 Код
Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: Lucky_spirit от Октябрь 04, 2012, 02:50 Народ, доброго времени суток!
Дабы не плодить еще одну тему, задам очень и очень похожий вопрос. У меня есть QTextBrowser. В нем отображается содержимое html файла. Сам файл грамотно прописан в файле ресурсов. С выводом самого текста проблем нет. Проблема заключается в том, что как бы ни был мал текст или вообще QTextBrowser был пустой, его высота превышает необходимое значение. Пытался добавить распорку над этим QTextBrowser, но она почти не спасает ситуацию Подскажите, что делать? Вот код и ниже скрин. В идеале хотелось бы, что бы QTextBrowser поджимался до необходимого минимального размера по вертикали. Код
Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: navrocky от Октябрь 04, 2012, 08:23 Надо отнаследоваться от QTextEdit, переписать sizeHint. Размер текста по высоте можно получить с помощью QTextDocument::size().
Код
Чтобы при изменении текста размер автоматически подстраивался, надо по сигналу QTextDocument::contentsChanged() звать QWidget::updateGeometry() Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: Lucky_spirit от Октябрь 04, 2012, 08:32 Надо отнаследоваться от QTextEdit, переписать sizeHint. Размер текста по высоте можно получить с помощью QTextDocument::size(). Немного не понял, что такое за слово "отнаследоваться"? В смысле, написать свой производный класс, базовым для которого будет QTextEdit? А почему не QTextBrowser? Мне кажется, от него наследование было бы более логичным. Но, в любом случае, спасибо за ответ! Сейчас буду дальше копать.Код
Чтобы при изменении текста размер автоматически подстраивался, надо по сигналу QTextDocument::contentsChanged() звать QWidget::updateGeometry() Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: navrocky от Октябрь 04, 2012, 08:34 Не углядел что QTextBrowser, значит наследуйтесь от QTextBrowser...
Цитировать Немного не понял, что такое за слово "отнаследоваться"? В смысле, написать свой производный класс, базовым для которого будет XXX? Ну да. Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: Lucky_spirit от Октябрь 04, 2012, 22:38 Надо отнаследоваться от QTextEdit, переписать sizeHint. Размер текста по высоте можно получить с помощью QTextDocument::size(). Код
Там небольшая ошибка была. Добавил еще перевод из QSizeF в обычный QSize. Но все равно текстовое поле не становится меньше, чем 4 строки. Но уже все равно намного лучше! Вот мой весь код. Код
Ошибка заключается в том, что вилжет всё равно не меньше 4-х строчек показывает, даже если текста всего 2 строки или 1. Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: GreatSnake от Октябрь 05, 2012, 11:10 Нужно ещё перегрузить minimumSizeHint().
Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: Lucky_spirit от Октябрь 05, 2012, 11:31 Нужно ещё перегрузить minimumSizeHint(). Вроде бы как в документации указано, что при нулевых значениях размер виджета устанавливается в какой-то определенный размер.Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: GreatSnake от Октябрь 05, 2012, 11:38 Цитата: assistant QLayout will never resize a widget to a size smaller than the minimum size hint unless minimumSize() is set or the size policy is set to QSizePolicy::Ignore. If minimumSize() is set, the minimum size hint will be ignored. Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: Lucky_spirit от Октябрь 10, 2012, 23:21 Ребята, опять я где-то чего-то не дочитал. В общем, в Windows наблюдаю такую картину. Переопределен метод sizeHint() в собственном классе. Размер подбирается более-менее нормально, но размер окошка с пустым текстом - как уже описывал выше. Переопределил по совету выше и метод minimumSizeHint(). Теперь окошко с текстом отображается высотой не более 1 мм. То есть текста там вообще не видно. Копал дебаггером. Оказалось, что в строке
Код размер документа возвращает равный QSize(0, 0). В чём может быть причина? Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: Lucky_spirit от Октябрь 15, 2012, 08:47 Всем доброго времени суток! Как не игрался я с высотой, ничего хорошего получить не смог. В Windows и Linux совершенно разно ведет себя окно. С Linux скриншот немного позже выложу вот код и скриншот с Windows.
Заголовочный файл: Код Файл исходного текста: Код Скриншот прикреплен. Тонкая полоска внизу окна и есть тот самый evgTextBrowser. Если закомментировать мою реализацию методов sizeHint() и minimumSizeHint(), то будет второй скрин. Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: GreatSnake от Октябрь 15, 2012, 10:31 Какой QSizePolicy используется для QTextBrowser и какой QLayout::SizeConstraint для QLayout?
Не мешало бы увидеть работающий код. Название: Re: Высота QTextEdit в соответствии с тектом Отправлено: Lucky_spirit от Октябрь 15, 2012, 13:09 Какой QSizePolicy используется для QTextBrowser и какой QLayout::SizeConstraint для QLayout? Вот ссылка на git репозиторий: https://github.com/Lucky-spirit/Financial-analysis.git (https://github.com/Lucky-spirit/Financial-analysis.git) . Этот код, не изменяя в нем ни строчки, ведет себя совершенно по-разному в Linux, Windows и Mac OS X.Не мешало бы увидеть работающий код. |