QT src5_3a编辑框的框架-文本块-字体设置的操作
QT src5_3a编辑框的框架-文本块-字体设置的操作
#ifndef MAINWINDOW5_3_H #define MAINWINDOW5_3_H #include <QMainWindow> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow5_3; } QT_END_NAMESPACE class MainWindow5_3 : public QMainWindow { Q_OBJECT public: MainWindow5_3(QWidget *parent = nullptr); ~MainWindow5_3(); private: Ui::MainWindow5_3 *ui; private slots: void showTextFrame();//获取文本框架 void showTextBlock();//获取文本块 void setTextFont(bool checked); }; #endif // MAINWINDOW5_3_H
#include "mainwindow5_3.h" #include "ui_mainwindow5_3.h" #include <QTextFrame> #include <QDebug> MainWindow5_3::MainWindow5_3(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow5_3) { ui->setupUi(this); QTextDocument *qDoc=ui->textEdit->document();//获取文档对象 QTextFrame *root_frame = qDoc->rootFrame();//获取根框架 QTextFrameFormat q_format;//创建框架的格式 q_format.setBorderBrush(Qt::red);//边界的颜色 q_format.setBorder(2);//边界线的宽度,粗细 root_frame->setFrameFormat(q_format);//框架使用格式 QTextFrameFormat frameFormat; frameFormat.setBackground(Qt::darkGreen); frameFormat.setMargin(1);//边距 frameFormat.setPadding(2);//填衬 frameFormat.setBorder(2); frameFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Dotted);//边框样式 QTextCursor cursor2=ui->textEdit->textCursor();//获取光标 cursor2.insertFrame(frameFormat);//在光标处插入框架 //获取框架 QTextFrame操作 QAction *action_textFrame=new QAction(tr("框架"),this); connect(action_textFrame,&QAction::triggered,this,&MainWindow5_3::showTextFrame); ui->toolBar->addAction(action_textFrame); //获取文本块 QTextBlock操作 QAction *action_block= new QAction(tr("文本块"),this); connect(action_block,&QAction::triggered,this,&MainWindow5_3::showTextBlock); ui->toolBar->addAction(action_block); //设置字体 QAction * action_font=new QAction(tr("字体"),this); action_font->setCheckable(true); //connect(action_font,&QAction::triggered,this,&MainWindow5_3::setTextFont); connect(action_font,&QAction::toggled,this,&MainWindow5_3::setTextFont); ui->toolBar->addAction(action_font); } MainWindow5_3::~MainWindow5_3() { delete ui; } //获取框架 QTextFrame操作 void MainWindow5_3::showTextFrame() { QTextDocument *q_doc =ui->textEdit->document(); QTextFrame *q_frame = q_doc->rootFrame(); QTextFrame::iterator frame_iterator; for (frame_iterator=q_frame->begin();!(frame_iterator.atEnd());++frame_iterator) { QTextFrame *child_frame=frame_iterator.currentFrame();//获取当前框架的指针 QTextBlock childBlock=frame_iterator.currentBlock();//获取当前文本块 if(child_frame) { qDebug()<<"frame"; } else if(childBlock.isValid()) { qDebug()<<"block:"<<childBlock.text(); } } } //获取文本块 QTextBlock操作 void MainWindow5_3::showTextBlock() { QTextDocument *qdoc= ui->textEdit->document(); QTextBlock qblock=qdoc->firstBlock();//获取文档的第一个文本块哦 for(int i=0;i<qdoc->blockCount();i++) { qDebug()<<tr("文本块:%1,首行行号:%2,长度:%3,内容:").arg(i).arg(qblock.firstLineNumber()).arg(qblock.length())<<qblock.text(); qblock=qblock.next(); } } void MainWindow5_3::setTextFont(bool checked) { if(checked)//处于选中状态 { QTextCursor qcursor=ui->textEdit->textCursor(); QTextBlockFormat block_format;//文本块格式 block_format.setAlignment(Qt::AlignCenter);//水平居中 qcursor.insertBlock(block_format);//插入文本块的格式 QTextCharFormat char_format; //字符格式 char_format.setBackground(Qt::blue);//背景色 char_format.setForeground(Qt::yellow);//字体颜色 char_format.setFont(QFont(tr("宋体"),12,QFont::Bold,true));//宋体12号,加粗,斜体字 char_format.setFontUnderline(true);//使用下划线 qcursor.setCharFormat(char_format); qcursor.insertText(tr("测试一下字体呢")); } else { qDebug()<<tr("字体未设置"); } }
欢迎讨论,相互学习。
cdtxw@foxmail.com