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


Qt Code:
  1. #include "mainwindow.h"
  2. #include<QFile>
  3. #include<QLine>
  4. #include<QTextDocument>
  5. #include<QVBoxLayout>
  6.  
  7. MainWindow::MainWindow(QWidget *parent)
  8. : QMainWindow(parent)
  9. {
  10. setMouseTracking(true);
  11.  
  12. objQPlainTextEdit.setPlainText("1234567890\n1234567890\n1234567890\n1234567890");
  13.  
  14. connect(&objQPlainTextEdit, &QPlainTextEdit::cursorPositionChanged,
  15. [this]() {
  16. extractTextBlock(objQPlainTextEdit.textCursor().selectedText());
  17. }
  18. );
  19.  
  20. QWidget *objMainWidget = new QWidget( this );
  21. QVBoxLayout *objVBoxLayout = new QVBoxLayout( objMainWidget );
  22.  
  23. objVBoxLayout->addWidget( &objQPlainTextEdit );
  24. objMainWidget->setLayout( objVBoxLayout );
  25.  
  26. setCentralWidget( objMainWidget );
  27.  
  28. objQTextFrame = new QTextFrame( objQPlainTextEdit.document()->rootFrame()->document() );
  29.  
  30. objQTextCursor.select(QTextCursor::BlockUnderCursor);
  31. objQTextCursor = objQTextFrame->lastCursorPosition();
  32.  
  33. objQTextFrameFormat.setBorder(11);
  34. objQPlainTextEdit.setTextCursor( objQTextCursor);
  35.  
  36. objQColor.setRed(22);
  37. objQBrush.setColor( objQColor );
  38. objQTextFrameFormat.setBorderBrush( objQBrush );
  39.  
  40. objQTextFrame->firstCursorPosition().insertFrame(objQTextFrameFormat);
  41. }
  42.  
  43. MainWindow::~MainWindow(){}
To copy to clipboard, switch view to plain text mode 

mainwindow.h


Qt Code:
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3.  
  4. #include <QMainWindow>
  5. #include <QTextCursor>
  6. #include <QTextBlock>
  7. #include <QPlainTextEdit>
  8. #include <iostream>
  9. #include <QDebug>
  10. #include <QTextFrame>
  11. #include <QBrush>
  12. #include <QColor>
  13.  
  14. class MainWindow : public QMainWindow
  15. {
  16. Q_OBJECT
  17.  
  18. public:
  19. QPlainTextEdit objQPlainTextEdit;
  20. QTextFrame *objQTextFrame;
  21. QTextFrameFormat objQTextFrameFormat;
  22. QTextCursor objQTextCursor;
  23. QBrush objQBrush;
  24. QColor objQColor;
  25.  
  26. MainWindow( QWidget *parent = 0 );
  27. ~MainWindow();
  28.  
  29. public slots:
  30. void extractTextBlock( QString arg )
  31. {
  32. qDebug()<< "\n: " << arg << "\n";
  33. }
  34. };
To copy to clipboard, switch view to plain text mode