dede关闭手机网站,开封企业网站建设,北京网站制作推广,phpcms二级栏目文章列表调用网站最新文章的方法描述
Scribe框架提供了一组类#xff0c;用于读取和操作结构化的富文本文档。与Qt中以前的富文本支持不同#xff0c;新的类集中在QTextDocument类上#xff0c;而不是原始文本信息。这使开发者能够创建和修改结构化的富文本文档#xff0c;而不必准备中间标记格式的内容。…描述
Scribe框架提供了一组类用于读取和操作结构化的富文本文档。与Qt中以前的富文本支持不同新的类集中在QTextDocument类上而不是原始文本信息。这使开发者能够创建和修改结构化的富文本文档而不必准备中间标记格式的内容。
文档中的信息可以通过两个互补的接口访问基于光标的接口用于编辑只读分层接口提供文档结构的高层次概述。基于光标的接口的主要优点是可以使用模拟用户与编辑器交互的操作编辑文本而不会丢失文档的基础结构。只读分层接口在执行搜索和文档导出等操作时最有用。
在Qt中富文本处理可以使用QTextEdit和QTextBrowser实现。这两个类都继承自QAbstractScrollArea类提供了文本的显示和编辑功能。
QTextEdit提供了类似于一个文本编辑器的界面可以进行编辑和显示富文本。需要注意的是QTextEdit可以显示图片和嵌入式对象但不能直接播放音频和视频。
QTextBrowser提供了一个只读的文本显示界面可以用于显示富文本内容。与QTextEdit不同QTextBrowser只支持显示图片不支持嵌入式对象。
在Qt中实现富文本处理的流程 创建QTextEdit或QTextBrowser对象设置其属性和初始文本内容 使用QTextCursor操作文本内容如插入文本、设置字体和颜色、插入图片等 将富文本内容保存到文件或使用QClipboard复制到剪贴板中 在需要的位置显示富文本内容如在某个对话框中、在网页中等。
示例代码实现在QTextEdit中插入一张图片和设置不同的字体和颜色 注意在使用插入图片功能时需要将图片资源添加到Qt项目中并使用相应的路径引用。 ui-textEdit-setPlainText(Hello World!); //设置初始文本内容ui-textEdit-setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard); //设置文本可选中属性为falseQTextCursor cursor ui-textEdit-textCursor(); //获取文本光标cursor.insertImage(:/images/image.png); //插入图片QFont font(Arial, 16, QFont::Bold); //设置字体cursor.movePosition(QTextCursor::End); //将光标移动到文本结尾QTextCharFormat format;format.setFont(font);cursor.insertText(\nQt is great!, format); //插入文本并设置字体QColor color(Qt::red); //设置颜色cursor.movePosition(QTextCursor::Start); //将光标移动到文本开头cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, 5); //选中第一个单词
// cursor.setCharFormat(QTextCharFormat()); //清除之前的格式
// cursor.setCharFormat(QTextCharFormat(), QTextCharFormat::ForegroundBrush); //设置前景色ui-textEdit-setTextCursor(cursor);富文本相关类
Qt提供了大量的类来解析、渲染、操作和编辑富文本。
模块描述解释QAbstractTextDocumentLayoutAbstract base class used to implement custom layouts for QTextDocuments用于为QTextDocuments实现自定义布局的抽象基类QFontSpecifies a font used for drawing text指定用于绘制文本的字体QSyntaxHighlighterAllows you to define syntax highlighting rules, and in addition you can use the class to query a document’s current formatting or user data允许定义语法高亮规则并且还可以使用该类查询文档的当前格式或用户数据QTextCursorOffers an API to access and modify QTextDocuments提供访问和修改QTextDocuments的APIQTextDocumentHolds formatted text维护格式化的文本QTextDocumentFragmentRepresents a piece of formatted text from a QTextDocument表示来自QTextDocument的格式化文本片段QTextDocumentWriterFormat-independent interface for writing a QTextDocument to files or other devices用于将QTextDocument写入文件或其他设备的格式无关接口QTextBlockFormatFormatting information for blocks of text in a QTextDocumentQTextDocument中文本块的格式信息QTextCharFormatFormatting information for characters in a QTextDocumentQTextDocument中字符的格式信息QTextFormatFormatting information for a QTextDocumentQTextDocument的格式信息QTextFrameFormatFormatting information for frames in a QTextDocumentQTextDocument中框架的格式信息QTextImageFormatFormatting information for images in a QTextDocumentQTextDocument中图像的格式信息QTextLengthEncapsulates the different types of length used in a QTextDocument封装在QTextDocument中使用的不同类型的长度QTextListFormatFormatting information for lists in a QTextDocumentQTextDocument中列表的格式信息QTextTableCellFormatFormatting information for table cells in a QTextDocumentQTextDocument中表单元格的格式信息QTextTableFormatFormatting information for tables in a QTextDocumentQTextDocument中表格的格式信息QTextInlineObjectRepresents an inline object in a QAbstractTextDocumentLayout and its implementations表示QAbstractTextDocumentLayout及其实现中的内联对象QTextLayoutUsed to lay out and render text用于布局和呈现文本QTextLineRepresents a line of text inside a QTextLayout表示QTextLayout内的一行文本QTextListDecorated list of items in a QTextDocumentQTextDocument中装饰了的列表项QTextBlockContainer for text fragments in a QTextDocumentQTextDocument中文本片段的容器QTextBlockGroupContainer for text blocks within a QTextDocumentQTextDocument中文本块的容器QTextBlockUserDataUsed to associate custom data with blocks of text用于将自定义数据与文本块关联QTextFragmentHolds a piece of text in a QTextDocument with a single QTextCharFormat在QTextDocument中保留具有单个QTextCharFormat的文本片段QTextFrameRepresents a frame in a QTextDocument表示QTextDocument中的框架QTextObjectBase class for different kinds of objects that can group parts of a QTextDocument together不同类型的对象的基类这些对象可以将QTextDocument的部分组合在一起QTextFrame::iteratorIterator for reading the contents of a QTextFrame用于读取QTextFrame内容的迭代器QTextBlock::iteratorQTextBlock::iterator class provides an iterator for reading the contents of a QTextBlockQTextBlock::iterator类为读取QTextBlock内容提供迭代器QTextOptionDescription of general rich text properties通用富文本属性的描述QTextTableRepresents a table in a QTextDocument表示QTextDocument中的表格QTextTableCellRepresents the properties of a cell in a QTextTable表示QTextTable中单元格的属性QPlainTextDocumentLayoutImplements a plain text layout for QTextDocument为QTextDocument实现纯文本布局QPlainTextEditWidget that is used to edit and display plain text用于编辑和显示纯文本的小部件QTextBrowserRich text browser with hypertext navigation富文本浏览器带有超文本导航QTextEditWidget that is used to edit and display both plain and rich text用于编辑和显示纯文本和富文本的小部件
QTextEdit的cursor和document关系图 Documen框架图 QTextFrame QTextDocument* doc ui-textEdit-document();QTextFrame* frame doc-rootFrame();QTextFrameFormat format;format.setBorderBrush(Qt::red);format.setBorder(3);frame-setFrameFormat(format);运行程序发现只可以在红色边框内编辑。 使用光标类对象在根框架中添加一个子框架。 QTextFrameFormat frameFormat;frameFormat.setBackground(Qt::lightGray);frameFormat.setMargin(10);frameFormat.setPadding(10);frameFormat.setBorder(2);frameFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Dotted);QTextCursor cursor ui-textEdit-textCursor();cursor.insertFrame(frameFormat);显示如下
文本块
绑定信号和槽输出文本块以下只可获取文本块不可获取frame的内容。
void MainWindow::on_action_frame_triggered()
{QTextDocument* doc ui-textEdit-document();QTextFrame* frame doc-rootFrame();QTextFrame::iterator it frame-begin();while (!it.atEnd()) {QTextFrame* childFrame it.currentFrame();QTextBlock childBlock it.currentBlock();if(childFrame){qDebug() frame;}else if(childBlock.isValid()){qDebug() block : childBlock.text();}it;}
}显示如下 获取frame的内容
void MainWindow::on_actionframeText_triggered()
{QTextDocument* doc ui-textEdit-document();QTextBlock block doc-firstBlock();for (int var 0; var doc-blockCount(); var) {qDebug() block.text();block block.next();}}界面及结果
QTextBlockFormat和QTextCharFormat
QTextBlockFormat设置对齐方式、缩进等格式 QTextCharFormat设置字体、颜色、下划线等格式。 QTextBlockFormat blockFormat;blockFormat.setAlignment(Qt::AlignCenter);cursor.insertBlock(blockFormat);QTextCharFormat charFormat;charFormat.setBackground(Qt::lightGray);charFormat.setForeground(Qt::blue);charFormat.setFont(QFont(宋体, 12, QFont::Bold, true));charFormat.setFontUnderline(true);cursor.setCharFormat(charFormat);cursor.insertText(helloworld);效果如下
插入表格、列表、图片
表格相关类
QTextTableFormat、QTextTableCellFormat、 QTextTable QTextTable *insertTable(int rows, int cols, const QTextTableFormat format);QTextTable *insertTable(int rows, int cols);QTextTable *currentTable() const;示例 QTextTableFormat tableFormat;tableFormat.setCellSpacing(2);tableFormat.setCellPadding(10);cursor.insertTable(2, 2, tableFormat);列表相关类
QTextListFormat、QTextList QTextList *insertList(const QTextListFormat format);QTextList *insertList(QTextListFormat::Style style);QTextList *createList(const QTextListFormat format);QTextList *createList(QTextListFormat::Style style);QTextList *currentList() const;示例 QTextListFormat listFormat;listFormat.setStyle(QTextListFormat::ListDecimal);cursor.insertList(listFormat);图片相关类
QTextImageFormat、 void insertImage(const QTextImageFormat format, QTextFrameFormat::Position alignment);void insertImage(const QTextImageFormat format);void insertImage(const QString name);void insertImage(const QImage image, const QString name QString());查找
查找到后可以定位字符串所在的行和列的编号。
qDebug() ui-textEdit-find(hello world, QTextDocument::FindBackward);ui-textEdit-textCursor().blockNumber();
ui-textEdit-textCursor().columnNumber();