x
31 декабря 2019 г. 3:02

Перестало работать форматирование текста в QTextEdit. Что ему еще надо?

qt, qt5, редактор, форматирование, QTextEdit

У меня есть класс EditorTextArea, унаследованный от QTextEdit

В нем есть метод, который вызывается при смене гарнитуры шрифта в QFontComboBox:

void EditorTextArea::onChangeFontFamily(QString fontFamily)
{
  qDebug() << "Apply font family " << fontFamily;

  // Ранее для установки шрифта хватало одной команды setFontFamily(fontFamily);
  // Теперь так не работает, весь новый код ниже сделан на основе Qt примера Text Edit
  // Но и новый вариант тоже не работает

  QTextCharFormat format;
  format.setFontFamily(fontFamily);

  // Если нет выделения, дополнительным курсором выделяется слово, на котором стоит курсор
  QTextCursor cursor = this->textCursor();
  if (!cursor.hasSelection())
  {
      cursor.select(QTextCursor::WordUnderCursor);
  }

  cursor.mergeCharFormat(format);
  this->mergeCurrentCharFormat(format);
}

Проблема в том, что при срабатывании этого кода на экране ничего не меняется. Новый шрифт не применяется.

Но если подвигать курсором, и посмотреть на виджет выбора шрифта (который отображает текущий шрифт под курсором), можно заметить, что шрифт для выделенного текста установился. Как минимум, в структуре документа место, где был изменен шрифт, помечено, что оно имеет новый установленный шрифт. И при этом начертание текста не меняется!

Однако, если посмотреть на сгенерированный HTML-код такого документа (в примере есть кнопка с паутинкой), то будет видно, что нового шрифта в нем не будет, везде будет упоминаться сплошной Sans Serif.

Это дело происходит на Qt 5.13.1.

Еще наблюдение: стандартный пример Text Edit работает нормально. Тот же самый код приводит к форматированию, новое начертание сразу становится видно.

В общем, не знаю как заставить работать выбор шрифта.

Проект: https://github.com/xintrea/mytetra_dev
Файл: ./app/src/libraries/wyedit/EditorTextArea.cpp

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
1

Добрый день. Странно как-то, может быть виджет не перерисовывается? не пробовали делать update виджета?

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Donate

Здравствуйте, уважаемые пользователи EVILEG !!!

Если сайт вам помог, то поддержите разработку сайта финансово, пожалуйста.

Вы можете сделать это следующими способами:

Спасибо, Евгений Легоцкой

p
17 февраля 2020 г. 14:41
pstMem

C++ - Тест 003. Условия и циклы

  • Результат:85баллов,
  • Очки рейтинга6
z
17 февраля 2020 г. 6:02
zet

C++ - Тест 006. Перечисления

  • Результат:80баллов,
  • Очки рейтинга4
z
17 февраля 2020 г. 5:49
zet

C++ - Тест 001. Первая программа и типы данных

  • Результат:80баллов,
  • Очки рейтинга4
Последние комментарии
24 февраля 2020 г. 3:54
Евгений Легоцкой

Добрый день. Там будет url, на который указывает ссылка тега a в пагинаторе, если правильно помню )) Написал этот код и забыл.
B
24 февраля 2020 г. 0:37
BahaMeirman

Евгений Здравствуйте! Не могу понять вот эту часть кода: url: jQuery(this).attr('action') наверное здесь должен быть путь к url, тогда 'action' на какой url указывает?
17 февраля 2020 г. 3:22
Евгений Легоцкой

Добрый день. Это кастомный тег, помещается в файл, который находится в каталоге templatetags myapp/ templatetags/ myapp.py
B
16 февраля 2020 г. 13:36
BahaMeirman

Добрый вечер! Монжно по подробней о теге get_companion? ссылка не работает.
Сейчас обсуждают на форуме
24 февраля 2020 г. 6:29
Евгений Легоцкой

Qt не предоставляет функционала по запросу root прав во время выполнения программы. Поэтому нужно использовать платформозависимый функционал, для Linux это будет выглядеть так: #include…
24 февраля 2020 г. 3:47
Евгений Легоцкой

Добрый день. Что означает клиентская область? Это изображение? Вам нужно распознавать символы текста или всё-таки пользователь будет вводить текст с клавиатуры, просто в любом месте "абстр…
VZ
21 февраля 2020 г. 5:19
Vladimir Zhitkovsky

void sendImage(int sessid, int type, int dest, int format, QString imgBase64Data){ QNetworkRequest request; request.setUrl(QUrl(ipAddress + "ctlapi/cmd=preparereportimg&sessid=…
20 февраля 2020 г. 14:40
mkdir

Здравствуйте! Пишу игру - 2D платформер в среде Qt. Имею не очень много опыта в разработке. Подскажите, как можно реализовать ситуацию, где QGraphicScene больше, чем QGraphicView и надо двигать …
20 февраля 2020 г. 7:12
Михаиллл

Вот так похоже можно https://doc.qt.io/qt-5/qtpurchasing-index.html
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB