Я хочу отформатировать выделенный текст в QTextEdit, нажав кнопку. Для axample я хочу сделать его полужирным, если он не является полужирным, или нежирным, если он выделен жирным шрифтом. Пожалуйста, помогите мне с примером.Как отформатировать выделенный текст в QTextEdit, нажав кнопку
EDIT:
На самом деле я нашел уже код - Qt демо для текстового редактора, который делает то, что мне нужно:
void
MyTextEdit::boldText(bool isBold) //this is the SLOT for the button trigger(bool)
{
QTextCharFormat fmt;
fmt.setFontWeight(isBold ? QFont::Bold : QFont::Normal);
mergeFormatOnWordOrSelection(fmt);
}
void
MyTextEdit::mergeFormatOnWordOrSelection(const QTextCharFormat &format)
{
QTextCursor cursor = m_textEdit->textCursor();
if (!cursor.hasSelection())
cursor.select(QTextCursor::WordUnderCursor);
cursor.mergeCharFormat(format);
m_textEdit->mergeCurrentCharFormat(format);
}
Но я не могу понять, что returnes в textCursor () и как происходит слияние свойств? Просто некоторые форматы меняются, некоторые из них остаются постоянными. Как mergeCharFormat функция понимает, что менять и что оставить как есть. Пожалуйста, объясните мне только эти две вещи. Спасибо.
А где кнопка? Или где выбран выделенный текст? – Narek
Вы можете подключить инициированный сигнал кнопки к слоту, который помещает теги HTML в начало и конец выделенного текста. Чтобы найти то, что выбранный текст, вам нужно будет проверить это с помощью QTextEdit :: textCursor(), который возвращает QTextCursor. Я попытаюсь обновить приведенный выше пример. – Live
Вы правы, но если текст выделен курсивом, и я делаю его полужирным с помощью boldText(), тогда швы этого текста должны быть полужирным шрифтом (и потерять курсив), поскольку я создаю новый объект QTextCharFormat, курсивный параметр которого по умолчанию не является курсивом (то есть ложным). Таким образом, функция cursor.mergeCharFormat() должна также учитывать измененный параметр italic, и thext должен потерять его курсив. Вы согласны? – Narek