В QT,При выделении текста в QPlainTextEdit будет выделен только первый абзац, а остальные абзацы не будут иметь никакогоC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 В QT,При выделении текста в QPlainTextEdit будет выделен только первый абзац, а остальные абзацы не будут иметь никакого

Сообщение Anonymous »

Когда я выделяю текст, выделяется только первый абзац, а новые абзацы после нажатия клавиши ввода не выделяются.
Подробнее
  • ВЕРСИЯ QT: 6.9.0 MSVC
[img]https://i.sstatic. сеть/53g9loeH.png[/img]

Слова, которые нужно выделить, совпадают.
Код выделения в классе MySyntaxHighlighter:

По сути, этот код похоже на официальную демонстрацию Qt.

Код: Выделить всё

void highlightBlock( const QString& text ) override
{
for ( const HighlightingRule& rule : highlightingRules )
{
QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch( text );
while ( matchIterator.hasNext( ) )
{
QRegularExpressionMatch match = matchIterator.next( );
setFormat( match.capturedStart( ), match.capturedLength( ), rule.format );
}
}
// Support multi-line comments
highlightMultilineComments( text );
}
В mainwindow.cpp

Код: Выделить всё

editor = new CodeEditor( currentTheme, editorContiner );
MySyntaxHighlighter* highlighter = new MySyntaxHighlighter( currentTheme, editor->document( ) );
класс редактора:

Код: Выделить всё

explicit CodeEditor( theme* cur_theme, QWidget* parent = nullptr )
: QPlainTextEdit( parent )
{
backgroundColor         = cur_theme->backgroundColor;
lineNumberAreaTextColor = cur_theme->lineNumberAreaTextColor;
lineNumberAreaColor     = cur_theme->lineNumberAreaColor;
currentColor            = cur_theme->currentColor;
fontSize                = cur_theme->fontSize;
tabSize                 = cur_theme->tabSize;

lineNumber = new LineNumberArea( parent, lineNumberAreaColor, lineNumberAreaTextColor, this );

connect( this, &CodeEditor::blockCountChanged, this, &CodeEditor::updateLineNumberAreaWidth );
connect( this, &CodeEditor::updateRequest, this, &CodeEditor::updateLineNumberArea );
connect( this, &CodeEditor::cursorPositionChanged, this, &CodeEditor::highlightCurrentLine );

updateLineNumberAreaWidth( 0 );

setFont( QFont( "Courier", fontSize ) );
setTabStopDistance( tabSize * fontMetrics( ).horizontalAdvance( ' ' ) );

connect( this, &QPlainTextEdit::cursorPositionChanged, this, &CodeEditor::highlightCurrentLine );

QPalette p = this->palette( );
p.setColor( QPalette::Active, QPalette::Base, backgroundColor );
p.setColor( QPalette::Inactive, QPalette::Base, backgroundColor );
this->setPalette( p );

highlightCurrentLine( );
}
Попробуйте
Я пытался переключить режим переноса строк в поле ввода, но это не дало эффекта.


Подробнее здесь: https://stackoverflow.com/questions/793 ... ph-will-be
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Абзац iText накладывается на ранее сохраненный абзац.
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Полезная нагрузка notifyItemChanged непоследовательно срабатывает при поиске и выделении текста в RecyclerView
    Anonymous » » в форуме Android
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Разделите текст на абзацы, где в конце текста есть «пространства»?
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при выделении объекта типа абстрактного класса
    Anonymous » » в форуме C++
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Просмотр списка WPF – прозрачный фон при выделении и выбранных элементах
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»