Как отформатировать выделенный текст в QTextEdit, нажав кнопку - PullRequest
3 голосов
/ 03 сентября 2010

Я хочу отформатировать выделенный текст в QTextEdit, нажав кнопку. Для примера я хочу сделать его жирным, если он не жирный, или не жирным, если он жирный. Пожалуйста, помогите мне с примером.

EDIT:

На самом деле я уже нашел код - qt demo для текстового редактора, который делает то, что мне нужно:

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);
 }

Но я не могу понять, что возвращает метод textCursor () , и как происходит слияние свойств? Просто некоторые форматы меняются, некоторые остаются неизменными. Как функция mergeCharFormat понимает, что изменить, а что оставить как есть. Пожалуйста, объясните мне только эти 2 вещи. Спасибо.

1 Ответ

3 голосов
/ 03 сентября 2010

textCursor () возвращает textCursor, который содержит позицию курсора, который вы используете в textEdit, смотрите QTextCursor в классах Qt.Таким образом, выбрав текст, содержащийся в начальной и конечной позиции курсора, у вас есть текст, который выделен в данный момент.

Что касается mergeCharFormat, я предполагаю, что он используется для применения нового состояния (полужирный,курсив, подчеркнут) и сохранить существующие.Скажите, что ваш текст уже подчеркнут, и вы используете жирный шрифт, вы хотели бы оставить оба.

Надеюсь, это поможет.

...