PDA

View Full Version : How to use QTextFrame in QPlainTextEdit with QTextCursor?



TheIndependentAquarius
6th September 2020, 13:05
My intention is to draw QTextFrame around the selected text in QPlainTextEdit.

This is what I have tried:

I can select the text but the frame is not drawn around it. Please guide.


mainwindow.cpp



#include "mainwindow.h"
#include<QFile>
#include<QLine>
#include<QTextDocument>
#include<QVBoxLayout>

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setMouseTracking(true);

objQPlainTextEdit.setPlainText("1234567890\n1234567890\n1234567890\n1234567890");

connect(&objQPlainTextEdit, &QPlainTextEdit::cursorPositionChanged,
[this]() {
extractTextBlock(objQPlainTextEdit.textCursor().se lectedText());
}
);

QWidget *objMainWidget = new QWidget( this );
QVBoxLayout *objVBoxLayout = new QVBoxLayout( objMainWidget );

objVBoxLayout->addWidget( &objQPlainTextEdit );
objMainWidget->setLayout( objVBoxLayout );

setCentralWidget( objMainWidget );

objQTextFrame = new QTextFrame( objQPlainTextEdit.document()->rootFrame()->document() );

objQTextCursor.select(QTextCursor::BlockUnderCurso r);
objQTextCursor = objQTextFrame->lastCursorPosition();

objQTextFrameFormat.setBorder(11);
objQPlainTextEdit.setTextCursor( objQTextCursor);

objQColor.setRed(22);
objQBrush.setColor( objQColor );
objQTextFrameFormat.setBorderBrush( objQBrush );

objQTextFrame->firstCursorPosition().insertFrame(objQTextFrameFor mat);
}

MainWindow::~MainWindow(){}



mainwindow.h



#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTextCursor>
#include <QTextBlock>
#include <QPlainTextEdit>
#include <iostream>
#include <QDebug>
#include <QTextFrame>
#include <QBrush>
#include <QColor>

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
QPlainTextEdit objQPlainTextEdit;
QTextFrame *objQTextFrame;
QTextFrameFormat objQTextFrameFormat;
QTextCursor objQTextCursor;
QBrush objQBrush;
QColor objQColor;

MainWindow( QWidget *parent = 0 );
~MainWindow();

public slots:
void extractTextBlock( QString arg )
{
qDebug()<< "\n: " << arg << "\n";
}
};