Название: QTextEdit default font Отправлено: andrew.k от Июль 31, 2012, 00:49 Напишу подробно, хотя вроде это не требуется.
В делегате используется QTextEdit. Хотя думаю это не особо важно. У меня есть комбо с размером шрифта. Доступные размеры ограничены (т.е. не любой размер можно задать) и крупнее шрифта, заданного стилем приложения. Вот пока редактируешь документ все хорошо. При создании редактора задаю дефолтный шрифт. Но если полностью очистить текст, то выставляется один и тот же шрифт, который задан в приложении. Я не согласен с этим. Как побороть? Как задаю дефолтный шрифт: Код
Цитата: Внутренний голос Andrew.k Верес, если ты не знаешь ответа на вопрос, не пиши ничего! Верес, если ты думаешь, что знаешь ответ, но он сформулирован не в виде кода или ссылки на нужный метод, не пиши ничего! Верес, если ты не понимаешь вопроса, не пиши ничего! Верес, если ты прочитал это и хочешь что-то написать по этому поводу, не пиши ничего! Название: Re: QTextEdit default font Отправлено: andrew.k от Июль 31, 2012, 00:54 Нашел такую же проблему (http://lists.qt.nokia.com/pipermail/qt-interest/2010-August/026429.html), но ответа нет совсем.
Больше гугол не помог. Название: Re: QTextEdit default font Отправлено: Bepec от Июль 31, 2012, 06:44 Кури исходники :)
Код: void QTextControlPrivate::setContent(Qt::TextFormat format, const QString &text, QTextDocument *document) При очистке создаётся новый QTextDocument с дефолтными значениями. Значит тебе надо отслеживать создание нового QTextDocument и сохранять/устанавливать шрифт у себя. PS внутреннему голосу привет :) Заразный он что ли? Сразу у нескольких человек открылся :) (Дурное быстро прилипает ;) ) Название: Re: QTextEdit default font Отправлено: andrew.k от Июль 31, 2012, 11:40 Кури исходники :) Я не знаю, к чему ты привел этот кусок кода, но setPlainText я не вызываю.Код: void QTextControlPrivate::setContent(Qt::TextFormat format, const QString &text, QTextDocument *document) При очистке создаётся новый QTextDocument с дефолтными значениями. Значит тебе надо отслеживать создание нового QTextDocument и сохранять/устанавливать шрифт у себя. Стал смотреть в textChanged() адрес документа возвращаемого QTextEdit::document() не меняется. Хотя в принципе это возможно, если он пересоздался по тому же адресу. Но не очень вероятно.Дальше. я при создании задал для QTextDocument динамическое свойство, которое сохранялось и ни куда не девалось на протяжении эксперимента. Отсюда вывод. QTextDocument не пересоздается. Хотя непонятно зачем текстедиту это вообще делать? PS внутреннему голосу привет :) Заразный он что ли? Сразу у нескольких человек открылся :) (Дурное быстро прилипает ;) ) Очевидно, что с ним все в порядке.Название: Re: QTextEdit default font Отправлено: Bepec от Июль 31, 2012, 11:49 Кхм... Ну видно тебе уже не поможешь :D
Но всё же посмотри исходники - на вызове clear вызывается setContent() и прочая :) PS ну да ладно. Если ты не можешь/хочешь верить и не можешь/хочешь смотреть исходники - тогда горько сиди :) PPS Код: void QTextControl::clear() Название: Re: QTextEdit default font Отправлено: andrew.k от Июль 31, 2012, 11:55 Но всё же посмотри исходники - на вызове clear вызывается setContent() и прочая :) Я очень рад. Но я не вызываю метод clear()!Я не знаю как тебе объяснять. Я просто редактирую текст в гуи. PS ну да ладно. Если ты не можешь/хочешь верить ... У нас тут не церковная школа, чтобы верить.Тем более когда подсовывают ложные факты, верить не хочется еще больше. ... и не можешь/хочешь смотреть исходники - тогда горько сиди :) Посмотреть исходники я и без тебя могу догадаться, но на это нужно время, которого сейчас нет.Название: Re: QTextEdit default font Отправлено: andrew.k от Июль 31, 2012, 11:56 позже сделаю тестовый пример.
Название: Re: QTextEdit default font Отправлено: Bepec от Июль 31, 2012, 13:04 Редактирование разве не вызывает метод setContent(%изменённое содержимое) ? :P
Название: Re: QTextEdit default font Отправлено: andrew.k от Июль 31, 2012, 13:17 Редактирование разве не вызывает метод setContent(%изменённое содержимое) ? :P Ты думаешь, после ввода каждой буквы создается, новый QTextDocument?Название: Re: QTextEdit default font Отправлено: Bepec от Июль 31, 2012, 15:17 Мда. И код ты читать не умеешь :D Печаль.
Название: Re: QTextEdit default font Отправлено: andrew.k от Июль 31, 2012, 16:40 Сделал тестовый проект на основе другого.
Интересует кнопка Set Default. Верес, исчезни куда-нибудь и не пиши сюда. Название: Re: QTextEdit default font Отправлено: Bepec от Июль 31, 2012, 17:27 Стань администратором форума, мб исчезну :)
PS проект посмотрю :) Название: Re: QTextEdit default font Отправлено: andrew.k от Август 01, 2012, 18:11 Неужели опять никто?
Вроде задача не хитрая. Название: Re: QTextEdit default font Отправлено: kambala от Август 01, 2012, 18:42 в мак ос такое поведение тоже проявляется. можешь просто каждый раз запоминать шрифт в currentCharFormatChanged(), а как только в обработчике сигнала textChanged() длина текста будет равна нулю, выставишь сохраненный шрифт. я проверял - textChanged() приходит после currentCharFormatChanged().
Название: Re: QTextEdit default font Отправлено: Alex Custov от Август 01, 2012, 18:52 определённо нужно запилить багрепорт
Название: Re: QTextEdit default font Отправлено: andrew.k от Август 01, 2012, 21:50 в мак ос такое поведение тоже проявляется. можешь просто каждый раз запоминать шрифт в currentCharFormatChanged(), а как только в обработчике сигнала textChanged() длина текста будет равна нулю, выставишь сохраненный шрифт. я проверял - textChanged() приходит после currentCharFormatChanged(). Ну это костыль. Это понятно.Название: Re: QTextEdit default font Отправлено: andrew.k от Август 01, 2012, 21:51 определённо нужно запилить багрепорт Не хочется верить, что это баг.Вон Верес увидел что-то такое в исходниках, чего видимо не видят все. |