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
){
setMouseTracking(true);
objQPlainTextEdit.setPlainText("1234567890\n1234567890\n1234567890\n1234567890");
connect(&objQPlainTextEdit, &QPlainTextEdit::cursorPositionChanged,
[this]() {
extractTextBlock(objQPlainTextEdit.textCursor().selectedText());
}
);
objVBoxLayout->addWidget( &objQPlainTextEdit );
objMainWidget->setLayout( objVBoxLayout );
setCentralWidget( objMainWidget );
objQTextFrame
= new QTextFrame( objQPlainTextEdit.
document()->rootFrame
()->document
() );
objQTextCursor = objQTextFrame->lastCursorPosition();
objQTextFrameFormat.setBorder(11);
objQPlainTextEdit.setTextCursor( objQTextCursor);
objQColor.setRed(22);
objQBrush.setColor( objQColor );
objQTextFrameFormat.setBorderBrush( objQBrush );
objQTextFrame->firstCursorPosition().insertFrame(objQTextFrameFormat);
}
MainWindow::~MainWindow(){}
#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().selectedText());
}
);
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::BlockUnderCursor);
objQTextCursor = objQTextFrame->lastCursorPosition();
objQTextFrameFormat.setBorder(11);
objQPlainTextEdit.setTextCursor( objQTextCursor);
objQColor.setRed(22);
objQBrush.setColor( objQColor );
objQTextFrameFormat.setBorderBrush( objQBrush );
objQTextFrame->firstCursorPosition().insertFrame(objQTextFrameFormat);
}
MainWindow::~MainWindow(){}
To copy to clipboard, switch view to plain text mode
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>
{
Q_OBJECT
public:
QPlainTextEdit objQPlainTextEdit;
~MainWindow();
public slots:
void extractTextBlock
( QString arg
) {
qDebug()<< "\n: " << arg << "\n";
}
};
#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";
}
};
To copy to clipboard, switch view to plain text mode
Bookmarks