QTextEdit 类
Detailed Description – 内容描述
Introduction and Concepts – 介绍和概念
QTextEdit是一种高级WYSIWYG查看器/编辑器,支持使用HTML样式的标记或Markdown格式的富文本格式。 它经过优化,可处理大型文档并快速响应用户输入。
QTextEdit适用于段落和字符。 段落是经过格式化的字符串,将其自动换行以适合窗口小部件的宽度。 默认情况下,阅读纯文本时,一个换行符表示一个段落。 一个文档包含零个或多个段落。 段落中的单词根据段落的对齐方式对齐。 段落之间用强行换行符分隔。 段落中的每个字符都有其自己的属性,例如字体和颜色。
QTextEdit可以显示图像,列表和表格。 如果文本太大而无法在文本编辑的视口中查看,则会出现滚动条。 文本编辑可以加载纯文本文件和富文本文件。 富文本可以使用HTML 4标记的子集来描述; 有关更多信息,请参考“支持的HTML子集”页面。
如果只需要显示一小段富文本,请使用QLabel。
Qt中的富文本格式支持旨在提供一种快速,便携式和高效的方法,以向应用程序添加合理的联机帮助功能,并为富文本编辑器提供基础。 如果您发现HTML支持不足以满足您的需求,则可以考虑使用Qt WebKit,它提供了功能齐全的Web浏览器小部件。

默认情况下,QTextEdit上鼠标光标的形状为Qt :: IBeamCursor。 可以通过viewport()的cursor属性进行更改。
Using QTextEdit as a Display Widget — 使用QTextEdit作为显示小部件
QTextEdit可以显示大的HTML子集,包括表格和图像。
可以使用setHtml()设置或替换文本,该函数将删除任何现有文本并将其替换为setHtml()调用中传递的文本。 如果使用旧版HTML调用setHtml(),然后调用toHtml(),则返回的文本可能具有不同的标记,但将呈现相同的标记。 可以使用clear()删除整个文本。
也可以使用setMarkdown()设置或替换文本,但同样要注意:如果您随后调用toMarkdown(),则返回的文本可能会有所不同,但含义要尽可能保留。 可以解析带有某些嵌入式HTML的Markdown,但具有setHtml()相同的限制; 但是toMarkdown()仅写入“纯” Markdown,而没有任何嵌入式HTML。
可以使用QTextCursor类或便利函数insertHtml(),insertPlainText(),append()或paste()插入文本本身。 QTextCursor还能够将复杂的对象(如表格或列表)插入文档中,并处理创建选择并将更改应用于选定的文本。
默认情况下,文本编辑将单词包装在空白处以适合文本编辑小部件。 setLineWrapMode()函数用于指定所需的换行类型,如果不希望任何换行,则指定NoWrap。 调用setLineWrapMode()设置固定像素宽度FixedPixelWidth或字符集(例如80列)FixedColumnWidth以及使用setLineWrapColumnOrWidth()指定的像素或列。 如果使用自动换行到窗口小部件的宽度WidgetWidth,则可以使用setWordWrapMode()指定是在空白还是在任何地方断开。
find()函数可用于查找和选择文本中的给定字符串。

如果要限制QTextEdit中的段落总数,例如在日志查看器中通常很有用,则可以为此使用QTextDocument的maximumBlockCount属性。
Read-only Key Bindings — 只读键绑定
使用QTextEdit只读时,按键绑定仅限于导航,并且只能使用鼠标选择文本:
Keypresses Action
UP 向上移动一行。
Down 向下移动一行。
Left 向左移动一个字符。
Right 向右移动一个字符。
PageUp 向上移动一页(视口)。
PageDown 向下移动一页(视口)。
Home 移动到文本的开始。
Alt+Wheel 水平滚动页面(滚轮是鼠标滚轮)。
Ctrl+Wheel 缩放文本。
Ctrl+A 选择所有文本。
文本编辑可能能够提供一些元信息。 例如,documentTitle()函数将从HTML 标记内返回文本。<br /> 注意:仅当font-size未设置为固定大小时,才放大HTML文档。</p> <p>Using QTextEdit as an Editor — 使用QTextEdit作为编辑器<br /> 有关将QTextEdit用作显示窗口小部件的所有信息也适用于此。<br /> 当前char格式的属性通过setFontItalic(),setFontWeight(),setFontUnderline(),setFontFamily(),setFontPointSize(),setTextColor()和setCurrentFont()进行设置。 当前段落的对齐方式通过setAlignment()设置。<br /> 文本的选择由QTextCursor类处理,该类提供了用于创建选择,检索文本内容或删除选择的功能。 您可以使用textCursor()方法检索与用户可见的光标对应的对象。 如果要在QTextEdit中设置选择,只需在QTextCursor对象上创建一个选择,然后使用setTextCursor()使该光标成为可见光标。 可以使用copy()将所选内容复制到剪贴板,或使用cut()剪切到剪贴板。 可以使用selectAll()选择整个文本。</p> <p>当光标移动并且基础格式属性更改时,会发出currentCharFormatChanged()信号以在新光标位置反映新属性。</p> <p>每当文本更改时(由于setText()或通过编辑器本身),都会发出textChanged()信号。</p> <p>QTextEdit包含一个QTextDocument对象,可以使用document()方法检索该对象。 您也可以使用setDocument()设置自己的文档对象。<br /> QTextDocument提供了一个isModified()函数,如果自加载文本以来或自上次以false作为参数调用setModified以来对文本进行了修改,则它将返回true。 另外,它提供了撤消和重做的方法。</p> <p>Drag and Drop — 拖放<br /> QTextEdit还支持自定义拖放行为。 默认情况下,当用户将这些MIME类型的数据拖放到文档上时,QTextEdit将插入纯文本,HTML和富文本格式。 重新实现canInsertFromMimeData()和insertFromMimeData()以添加对其他MIME类型的支持。<br /> 例如,要允许用户将图像拖放到QTextEdit上,可以通过以下方式实现这些功能:</p> <p>我们通过返回true添加对图像MIME类型的支持。 对于所有其他MIME类型,我们使用默认实现。</p> <p>我们从MIME源保存的QVariant中解压缩图像,并将其作为资源插入文档中。</p> <p>Editing Key Bindings — 编辑按键绑定<br /> 为编辑而实现的键绑定列表:</p> <p>Keypresses Action<br /> Backspace 删除光标左边的字符。<br /> Delete 删除光标右边的字符。<br /> Ctrl+C 将选定的文本复制到剪贴板。<br /> Ctrl+Insert 将选定的文本复制到剪贴板。<br /> Ctrl+K 删除到行尾。<br /> Ctrl+V 将剪贴板文本粘贴到文本编辑中。<br /> Shift+Insert 剪贴板文本粘贴到文本编辑中。<br /> Ctrl+X 删除选定的文本并将其复制到剪贴板。<br /> Shift+Delete 删除选定的文本并将其复制到剪贴板。<br /> Ctrl+Z 重做上一个操作。<br /> Ctrl+Y 重做上一个操作。<br /> Left 移动光标向左一个字符。<br /> Ctrl+Left 将光标向左移动一个单词。<br /> Right 将光标向右移动一个字符。<br /> Ctrl+Right 将光标向右移动一个单词。<br /> Up 将光标向上移动一行。<br /> Down 将光标向下移动一行。<br /> PageUp 将光标向上移动一页。<br /> PageDown 将光标向下移动一页。<br /> Home 将光标移动到行的开头。<br /> Ctrl+Home 将光标移动到文本的开头。<br /> End 将光标移动到行尾。<br /> Ctrl+End 将光标移动到文本的末尾。<br /> Alt+Wheel 水平滚动页面(滚轮是鼠标滚轮)。<br /> 要选择(标记)文本,请在按住Shift键的同时按下移动键之一,例如Shift + Right将选择右侧的字符,而Shift + Ctrl + Right将选择右侧的单词,依此类推。<br /> 另请参见QTextDocument,QTextCursor,应用示例,语法突出显示示例和RTF处理。</p> <p>Prpperties – 属性<br /> acceptRichText : bool<br /> 此属性保存文本编辑是否接受用户的富文本插入<br /> 当此属性设置为false时,文本编辑将仅接受来自用户的纯文本输入。 例如通过剪贴板或拖放。<br /> 此属性的默认值为true。<br /> 此属性在Qt 4.1中引入。<br /> 访问函数:<br /> bool acceptRichText() const<br /> void setAcceptRichText(bool accept)</p> <p>autoFormatting : AutoFormatting<br /> 此属性包含已启用的一组自动格式设置功能<br /> 该值可以是AutoFormattingFlag枚举中值的任何组合。 默认值为自动无。 选择“自动全部”以启用所有自动格式化。<br /> 当前,唯一提供的自动格式设置功能是AutoBulletList。 Qt的未来版本可能会提供更多功能。<br /> 访问函数:<br /> QtextEdit::AutoFormatting autoFormatting() const<br /> void setAutoFormatting(QtextEdit::AutoFormatting features)</p> <p>cursorWidth : int<br /> 此属性指定光标的宽度(以像素为单位)。 预设值是1。<br /> 此属性在Qt 4.2中引入。<br /> 访问函数:<br /> int cursorWidth() const<br /> void setCursorWidth(int width)</p> <p>document : QTextDocument*<br /> 此属性保存文本编辑器的基础文档。<br /> 注意:除非它是文档的父对象,否则编辑器不会拥有该文档的所有权。 提供的文档的父对象仍然是该对象的所有者。 如果先前分配的文档是编辑器的子级,则将其删除。<br /> 访问功能:<br /> QtextDocument * document() const<br /> void setDocument(QtextDocument * document)</p> <p>documentTitle : QString<br /> 此属性保存从文本解析的文档的标题。<br /> 默认情况下,对于新创建的空文档,此属性包含一个空字符串。<br /> 访问函数:<br /> QString documentTitle() const<br /> void setDocumentTitle(const QString & title)</p> <p>html : QString<br /> 此属性为文本编辑的文本提供HTML界面。</p> <p>toHtml()以html形式返回文本编辑的文本。</p> <p>setHtml()更改文本编辑的文本。 删除所有先前的文本,并清除撤消/重做历史记录。 输入的文本被解释为html格式的富文本。 除非textCursor()已经在文档的开头,否则currentCharFormat()也会被重置。</p> <p>注意:在创建包含HTML的QString并将其传递给setHtml()时,调用者有责任确保正确解码文本。</p> <p>默认情况下,对于新创建的空文档,此属性包含用于描述没有正文文本的HTML 4.0文档的文本。<br /> 访问功能:<br /> QString toHtml() const<br /> void setHtml(const QString & text)<br /> 通知者信号:<br /> void textChanged()<br /> 另请参见受支持的HTML子集和plainText。</p> <p>lineWrapColumnOrWidth : int<br /> 此属性保存文本将被换行的位置(以像素或列为单位,具体取决于换行模式)<br /> 如果换行模式为FixedPixelWidth,则该值是从文本编辑的左边缘起应包裹文本的像素数。 如果换行模式为FixedColumnWidth,则该值是从文本编辑的左边缘起应被换行的列号(以字符列为单位)。<br /> 默认情况下,此属性的值为0。<br /> 访问功能:<br /> int lineWrapColumnOrWidth() const<br /> void setLineWrapColumnOrWidth(int w)<br /> 另请参见lineWrapMode。</p> <p>lineWrapMode : LineWrapMode<br /> 此属性保留换行模式<br /> 默认模式是WidgetWidth,它使单词被包裹在文本编辑的右边缘。 包装发生在空白处,使整个单词保持完整。 如果要在单词内进行换行,请使用setWordWrapMode()。 如果将固定模式设置为FixedPixelWidth或FixedColumnWidth,则还应使用所需宽度调用setLineWrapColumnOrWidth()。<br /> 访问功能:<br /> QtextEdit::LineWrapMode lineWrapMode() const<br /> void setLineWrapMode(QtextEdit::LineWrapMode mode)<br /> 另请参见lineWrapColumnOrWidth。</p> <p>markdown : QString<br /> 此属性为文本编辑的文本提供Markdown界面。</p> <p>toMarkdown()将文本编辑的文本作为“纯” Markdown返回,没有任何嵌入式HTML格式。 QTextDocument支持的某些功能(例如使用特定的颜色和命名的字体)无法用“纯” Markdown表示,因此将省略它们。<br /> setMarkdown()更改文本编辑的文本。 删除所有先前的文本,并清除撤消/重做历史记录。 输入文本被解释为Markdown格式的富文本。</p> <p>markdown字符串中包含的HTML的解析与setHtml中的处理相同; 但是,不支持HTML块内的Markdown格式。</p> <p>可以通过features参数启用或禁用解析器的某些功能:<br /> Constant 描述<br /> MarkdownNoHTML Markdown文本中的任何HTML标签都将被丢弃<br /> MarkdownDialectCommonMark 解析器仅支持CommonMark标准化的功能<br /> MarkdownDialectGitHub 解析器支持GitHub语法<br /> 默认值为MarkdownDialectGitHub。<br /> 访问函数:<br /> QString toMarkdowm(QtextDocument::MarkdownFeatures features = QtextDocument::MarkdownDialectGitHub) const<br /> void setMarkdown(const QString & markdown)</p> <p>overwriteMode : bool<br /> 此属性保存用户输入的文本是否将覆盖现有文本<br /> 与许多文本编辑器一样,文本编辑器小部件可以配置为使用用户输入的新文本来插入或覆盖现有文本。<br /> 如果此属性为true,则现有文本将被新文本按字符替换; 否则,将文本插入光标位置,替换现有文本。<br /> 默认情况下,此属性为false(新文本不会覆盖现有文本)。<br /> 此属性在Qt 4.1中引入。<br /> 访问函数:<br /> bool overwriteMode() const<br /> void setOverwriteMode(bool overwrite)</p> <p>placeholderText : QString<br /> 此属性保存编辑器占位符文本<br /> 设置此属性会使编辑器在document()为空的情况下显示灰色的占位符文本。<br /> 默认情况下,此属性包含一个空字符串。<br /> 此属性在Qt 5.2中引入。<br /> 访问函数:<br /> QString placeholderText() const<br /> void setPlaceholderText(const QString & placeholderText)<br /> 另请参见document()。</p> <p>plainText : QString<br /> 此属性获取并将文本编辑器的内容设置为纯文本。 设置该属性后,先前的内容将被删除,撤消/重做历史记录将被重置。 除非textCursor()已经在文档的开头,否则currentCharFormat()也会被重置。<br /> 如果文本编辑具有其他内容类型,则在调用toPlainText()时不会将其替换为纯文本。 唯一的例外是不间断空间nbsp;,它将转换为标准空间。<br /> 默认情况下,对于没有内容的编辑器,此属性包含一个空字符串。<br /> 此属性在Qt 4.3中引入。<br /> 访问函数:<br /> QString toPlainText() const<br /> void setPlainText(const QString & text)<br /> 另请参见html。</p> <p>readOnly : bool<br /> 此属性保存文本编辑是否为只读<br /> 在只读文本编辑中,用户只能浏览文本并选择文本。 修改文本是不可能的。<br /> 此属性的默认值为false。<br /> 访问函数:<br /> bool isReadOnly() const<br /> void setReadOnly(bool ro)</p> <p>tabChangesFocus : bool<br /> 此属性保存Tab是否更改焦点还是被接受为输入<br /> 在某些情况下,文本编辑不应允许用户使用Tab键输入制表符或更改缩进,因为这会破坏焦点链。 默认为false。<br /> 访问功能:<br /> bool tabChangeFocus() const<br /> void setTabChangesFocus(cool b)</p> <p>tabStopDistance : qreal<br /> 此属性保存制表符停止距离(以像素为单位)<br /> 默认情况下,此属性包含80像素的值。<br /> 此属性在Qt 5.10中引入。<br /> 访问功能:<br /> qreal tabStopDistance() const<br /> void setTabStopDistance(qreal distance)</p> <p>textInteractionFlags : Qt::TextInteractionFlags<br /> 指定窗口小部件应如何与用户输入交互。<br /> 默认值取决于QTextEdit是只读的还是可编辑的,以及它是否是QTextBrowser。<br /> 此属性在Qt 4.2中引入。<br /> 访问函数:<br /> Qt::TextInteractionFlags textInteractionFlags() const<br /> void setTextInteractionFlags(Qt::TextInteractionFlags flags)</p> <p>undoRedoEnabled : bool<br /> 此属性保存是否启用撤消和重做<br /> 如果此属性为true,并且存在可以撤消(或重做)的操作,则用户只能撤消或重做操作。<br /> 访问函数:<br /> bool isUndoRedoEnabled() const<br /> void setUndoRedoEnabled(bool enable)</p> <p>wordWrapMode : QTextOption::WrapMode<br /> 此属性保留QTextEdit在按文字换行时将使用的模式<br /> 默认情况下,此属性设置为QTextOption :: WrapAtWordBoundaryOrAnywhere。<br /> 访问功能:<br /> QtextOption::WrapMode wordWrapMode() const<br /> void setWordWrapMode(QtextOption::WrapMode policy)<br /> 另请参见QTextOption :: WrapMode。</p> <p>Public Functions – 公共函数<br /> QTextEdit::QTextEdit(const QString &text, QWidget *parent = nullptr)<br /> 构造一个带有父parent的QTextEdit。 文本编辑将显示text。 文本被解释为html。<br /> QTextEdit::QTextEdit(QWidget *parent = nullptr)<br /> 构造一个带有父parent的空QTextEdit。</p> <p>QTextEdit::~QTextEdit()<br /> 析构函数。</p> <p>acceptRichText : bool<br /> 此属性保存文本编辑是否接受用户的富文本插入<br /> 当此属性设置为false时,文本编辑将仅接受来自用户的纯文本输入。 例如通过剪贴板或拖放。<br /> 此属性的默认值为true。<br /> 此属性在Qt 4.1中引入。<br /> 访问函数:<br /> bool acceptRichText() const<br /> void setAcceptRichText(bool accept)</p> <p>Qt::Alignment QTextEdit::alignment() const<br /> 返回当前段落的对齐方式。<br /> 另请参见setAlignment()。</p> <p>QString QTextEdit::anchorAt(const QPoint &pos) const<br /> 返回位置pos处锚点的引用,如果该点不存在锚,则返回一个空字符串。</p> <p>autoFormatting : AutoFormatting<br /> 此属性包含已启用的一组自动格式设置功能<br /> 该值可以是AutoFormattingFlag枚举中值的任何组合。 默认值为自动无。 选择“自动全部”以启用所有自动格式化。<br /> 当前,唯一提供的自动格式设置功能是AutoBulletList。 Qt的未来版本可能会提供更多功能。<br /> 访问函数:<br /> QtextEdit::AutoFormatting autoFormatting() const<br /> void setAutoFormatting(QtextEdit::AutoFormatting features)</p> <p>bool QTextEdit::canPaste() const<br /> 返回是否可以将文本从剪贴板粘贴到textedit中。<br /> 此功能在Qt 4.2中引入。</p> <p>QMenu *QTextEdit::createStandardContextMenu()<br /> 此功能创建标准上下文菜单,当用户使用鼠标右键单击文本编辑时将显示该菜单。 从默认的contextMenuEvent()处理函数中调用它。 弹出菜单的所有权已转移给调用者。<br /> 我们建议您改用createStandardContextMenu(QPoint)版本,该版本将启用对用户单击位置敏感的操作。</p> <p>QMenu *QTextEdit::createStandardContextMenu(const QPoint &position)<br /> 此功能创建标准上下文菜单,当用户使用鼠标右键单击文本编辑时将显示该菜单。 从默认的contextMenuEvent()处理函数中调用它,并采用鼠标单击所在的文档坐标中的位置。 这可以启用对用户单击位置敏感的动作。 弹出菜单的所有权已转移给调用者。<br /> 此功能在Qt 4.4中引入。</p> <p>QTextCharFormat QTextEdit::currentCharFormat() const<br /> 返回插入新文本时使用的char格式。<br /> 另请参见setCurrentCharFormat()。</p> <p>QFont QTextEdit::currentFont() const<br /> 返回当前格式的字体。<br /> 另请参见setCurrentFont(),setFontFamily()和setFontPointSize()。</p> <p>QTextCursor QTextEdit::cursorForPosition(const QPoint &pos) const<br /> 在位置pos(在视口坐标中)返回QTextCursor。</p> <p>QRect QTextEdit::cursorRect(const QTextCursor &cursor) const<br /> 返回一个包含cursor的矩形(在视口坐标中)。</p> <p>QRect QTextEdit::cursorRect() const<br /> 返回一个矩形(在视口坐标中),该矩形包括文本编辑的光标。</p> <p>cursorWidth : int<br /> 此属性指定光标的宽度(以像素为单位)。 预设值是1。<br /> 此属性在Qt 4.2中引入。<br /> 访问函数:<br /> int cursorWidth() const<br /> void setCursorWidth(int width)</p> <p>document : QTextDocument*<br /> 此属性保存文本编辑器的基础文档。<br /> 注意:除非它是文档的父对象,否则编辑器不会拥有该文档的所有权。 提供的文档的父对象仍然是该对象的所有者。 如果先前分配的文档是编辑器的子级,则将其删除。<br /> 访问功能:<br /> QtextDocument * document() const<br /> void setDocument(QtextDocument * document)</p> <p>documentTitle : QString<br /> 此属性保存从文本解析的文档的标题。<br /> 默认情况下,对于新创建的空文档,此属性包含一个空字符串。<br /> 访问函数:<br /> QString documentTitle() const<br /> void setDocumentTitle(const QString & title)</p> <p>void QTextEdit::ensureCursorVisible()<br /> 如有必要,可通过滚动文本编辑来确保光标可见。<br /> QList QTextEdit::extraSelections() const<br /> 返回先前设置的其他选择。<br /> 此功能在Qt 4.2中引入。<br /> 另请参见setExtraSelections()。</p> <p>bool QTextEdit::find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())<br /> 使用给定的options查找字符串的下一个匹配项exp。 如果找到exp,则返回true,并更改光标以选择匹配项;否则,返回true。 否则返回false。</p> <p>bool QTextEdit::find(const QRegExp &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())<br /> 这是一个过载函数。<br /> 使用给定的选项查找与正则表达式exp匹配的下一个匹配项。 对于此重载,将忽略QTextDocument :: FindCaseSensitively选项,而应使用QRegExp :: caseSensitivity。<br /> 如果找到匹配项,则返回true,并更改光标以选择匹配项;否则,返回true。 否则返回false。<br /> 此功能在Qt 5.3中引入。</p> <p>bool QTextEdit::find(const QRegularExpression &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())<br /> 这是一个过载函数。<br /> 使用给定的选项查找与正则表达式exp匹配的下一个匹配项。 对于此重载,将忽略QTextDocument :: FindCaseSensitively选项,而应使用QRegularExpression :: CaseInsensitiveOption。<br /> 如果找到匹配项,则返回true,并更改光标以选择匹配项;否则,返回true。 否则返回false。<br /> 此功能在Qt 5.13中引入。<br /> QString QTextEdit::fontFamily() const<br /> 返回当前格式的字体系列。<br /> 另请参见setFontFamily(),setCurrentFont()和setFontPointSize()。</p> <p>bool QTextEdit::fontItalic() const<br /> 如果当前格式的字体为斜体,则返回true;否则,返回true。 否则返回false。<br /> 另请参见setFontItalic()。</p> <p>qreal QTextEdit::fontPointSize() const<br /> 返回当前格式的字体的磅值。<br /> 另请参见setFontFamily(),setCurrentFont()和setFontPointSize()。</p> <p>bool QTextEdit::fontUnderline() const<br /> 如果当前格式的字体带下划线,则返回true;否则,返回true。 否则返回false。<br /> 另请参见setFontUnderline()。</p> <p>int QTextEdit::fontWeight() const<br /> 返回当前格式的字体粗细。<br /> 另请参见setFontWeight(),setCurrentFont(),setFontPointSize()和QFont :: Weight。</p> <p>readOnly : bool<br /> 此属性保存文本编辑是否为只读<br /> 在只读文本编辑中,用户只能浏览文本并选择文本。 修改文本是不可能的。<br /> 此属性的默认值为false。<br /> 访问函数:<br /> bool isReadOnly() const<br /> void setReadOnly(bool ro)</p> <p>undoRedoEnabled : bool<br /> 此属性保存是否启用撤消和重做<br /> 如果此属性为true,并且存在可以撤消(或重做)的操作,则用户只能撤消或重做操作。<br /> 访问函数:<br /> bool isUndoRedoEnabled() const<br /> void setUndoRedoEnabled(bool enable)</p> <p>lineWrapColumnOrWidth : int<br /> 此属性保存文本将被换行的位置(以像素或列为单位,具体取决于换行模式)<br /> 如果换行模式为FixedPixelWidth,则该值是从文本编辑的左边缘起应包裹文本的像素数。 如果换行模式为FixedColumnWidth,则该值是从文本编辑的左边缘起应被换行的列号(以字符列为单位)。<br /> 默认情况下,此属性的值为0。<br /> 访问功能:<br /> int lineWrapColumnOrWidth() const<br /> void setLineWrapColumnOrWidth(int w)<br /> 另请参见lineWrapMode。<br /> lineWrapMode : LineWrapMode<br /> 此属性保留换行模式<br /> 默认模式是WidgetWidth,它使单词被包裹在文本编辑的右边缘。 包装发生在空白处,使整个单词保持完整。 如果要在单词内进行换行,请使用setWordWrapMode()。 如果将固定模式设置为FixedPixelWidth或FixedColumnWidth,则还应使用所需宽度调用setLineWrapColumnOrWidth()。<br /> 访问功能:<br /> QtextEdit::LineWrapMode lineWrapMode() const<br /> void setLineWrapMode(QtextEdit::LineWrapMode mode)<br /> 另请参见lineWrapColumnOrWidth</p> <p>QVariant QTextEdit::loadResource(int type, const QUrl &name)<br /> 加载由给定类型和名称指定的资源。<br /> 该函数是QTextDocument :: loadResource()的扩展。<br /> 注意:可以通过元对象系统和QML调用此函数。 请参阅Q_INVOKABLE。<br /> 另请参见QTextDocument :: loadResource()。</p> <p>void QTextEdit::mergeCurrentCharFormat(const QTextCharFormat &modifier)<br /> 通过在编辑器的光标上调用QTextCursor :: mergeCharFormat,将修饰符中指定的属性合并为当前字符格式。 如果编辑器具有选择,则修饰符的属性将直接应用于选择。<br /> 另请参见QTextCursor :: mergeCharFormat()。</p> <p>void QTextEdit::moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor)<br /> 通过执行给定的操作来移动光标。<br /> 如果mode为QTextCursor :: KeepAnchor,则光标选择其移过的文本。 这与用户按住Shift键并使用光标键移动光标时获得的效果相同。<br /> 此功能在Qt 4.2中引入。<br /> 另请参见QTextCursor :: movePosition()。</p> <p>overwriteMode : bool<br /> 此属性保存用户输入的文本是否将覆盖现有文本<br /> 与许多文本编辑器一样,文本编辑器小部件可以配置为使用用户输入的新文本来插入或覆盖现有文本。<br /> 如果此属性为true,则现有文本将被新文本按字符替换; 否则,将文本插入光标位置,替换现有文本。<br /> 默认情况下,此属性为false(新文本不会覆盖现有文本)。<br /> 此属性在Qt 4.1中引入。<br /> 访问函数:<br /> bool overwriteMode() const<br /> void setOverwriteMode(bool overwrite)</p> <p>placeholderText : QString<br /> 此属性保存编辑器占位符文本<br /> 设置此属性会使编辑器在document()为空的情况下显示灰色的占位符文本。<br /> 默认情况下,此属性包含一个空字符串。<br /> 此属性在Qt 5.2中引入。<br /> 访问函数:<br /> QString placeholderText() const<br /> void setPlaceholderText(const QString & placeholderText)<br /> 另请参见document()。</p> <p>void QTextEdit::print(QPagedPaintDevice *printer) const<br /> 便捷功能,可将文本编辑的文档打印到给定的打印机上。 这等效于直接在文档上调用print方法,除了此函数还支持QPrinter :: Selection作为打印范围。<br /> 此功能在Qt 4.3中引入。<br /> 另请参见QTextDocument :: print()。</p> <p>acceptRichText : bool<br /> 此属性保存文本编辑是否接受用户的富文本插入<br /> 当此属性设置为false时,文本编辑将仅接受来自用户的纯文本输入。 例如通过剪贴板或拖放。<br /> 此属性的默认值为true。<br /> 此属性在Qt 4.1中引入。<br /> 访问函数:<br /> bool acceptRichText() const<br /> void setAcceptRichText(bool accept)</p> <p>void QTextEdit::setCurrentCharFormat(const QTextCharFormat &format)<br /> 通过在编辑器的光标上调用QTextCursor :: setCharFormat()来设置在插入新文本以设置格式时使用的char格式。 如果编辑器具有选择,则将char格式直接应用于选择。<br /> 另请参见currentCharFormat()。</p> <p>cursorWidth : int<br /> 此属性指定光标的宽度(以像素为单位)。 预设值是1。<br /> 此属性在Qt 4.2中引入。<br /> 访问函数:<br /> int cursorWidth() const<br /> void setCursorWidth(int width)</p> <p>void QTextEdit::setExtraSelections(const QList &selections)<br /> 此功能允许使用给定的颜色临时标记文档中的某些区域,指定为选择区域。 例如,在编程编辑器中用给定的背景色标记整行文本以指示断点的存在,这可能很有用。<br /> 此功能在Qt 4.2中引入。<br /> 另请参见QTextEdit :: ExtraSelection和extraSelections()。</p> <p>tabStopDistance : qreal<br /> 此属性保存制表符停止距离(以像素为单位)<br /> 默认情况下,此属性包含80像素的值。<br /> 此属性在Qt 5.10中引入。<br /> 访问功能:<br /> qreal tabStopDistance() const<br /> void setTabStopDistance(qreal distance)</p> <p>tabChangesFocus : bool<br /> 此属性保存Tab是否更改焦点还是被接受为输入<br /> 在某些情况下,文本编辑不应允许用户使用Tab键输入制表符或更改缩进,因为这会破坏焦点链。 默认为false。<br /> 访问功能:<br /> bool tabChangeFocus() const<br /> void setTabChangesFocus(cool b)</p> <p>void QTextEdit::setTextCursor(const QTextCursor &cursor)<br /> 设置可见光标。<br /> 另请参见textCursor()。</p> <p>textInteractionFlags : Qt::TextInteractionFlags<br /> 指定窗口小部件应如何与用户输入交互。<br /> 默认值取决于QTextEdit是只读的还是可编辑的,以及它是否是QTextBrowser。<br /> 此属性在Qt 4.2中引入。<br /> 访问函数:<br /> Qt::TextInteractionFlags textInteractionFlags() const<br /> void setTextInteractionFlags(Qt::TextInteractionFlags flags)</p> <p>wordWrapMode : QTextOption::WrapMode<br /> 此属性保留QTextEdit在按文字换行时将使用的模式<br /> 默认情况下,此属性设置为QTextOption :: WrapAtWordBoundaryOrAnywhere。<br /> 访问功能:<br /> QtextOption::WrapMode wordWrapMode() const<br /> void setWordWrapMode(QtextOption::WrapMode policy)<br /> 另请参见QTextOption :: WrapMode。</p> <p>QColor QTextEdit::textBackgroundColor() const<br /> 返回当前格式的文本背景色。<br /> 此功能在Qt 4.4中引入。<br /> 另请参见setTextBackgroundColor()。</p> <p>QColor QTextEdit::textColor() const<br /> 返回当前格式的文本颜色。<br /> 另请参见setTextColor()。</p> <p>QTextCursor QTextEdit::textCursor() const<br /> 返回表示当前可见光标的QTextCursor的副本。 请注意,对返回的游标所做的更改不会影响QTextEdit的游标。 使用setTextCursor()更新可见光标。<br /> 另请参见setTextCursor()。</p> <p>html : QString<br /> 此属性为文本编辑的文本提供HTML界面。</p> <p>toHtml()以html形式返回文本编辑的文本。</p> <p>setHtml()更改文本编辑的文本。 删除所有先前的文本,并清除撤消/重做历史记录。 输入的文本被解释为html格式的富文本。 除非textCursor()已经在文档的开头,否则currentCharFormat()也会被重置。</p> <p>注意:在创建包含HTML的QString并将其传递给setHtml()时,调用者有责任确保正确解码文本。</p> <p>默认情况下,对于新创建的空文档,此属性包含用于描述没有正文文本的HTML 4.0文档的文本。<br /> 访问功能:<br /> QString toHtml() const<br /> void setHtml(const QString & text)<br /> 通知者信号:<br /> void textChanged()<br /> 另请参见受支持的HTML子集和plainText。</p> <p>markdown : QString<br /> 此属性为文本编辑的文本提供Markdown界面。</p> <p>toMarkdown()将文本编辑的文本作为“纯” Markdown返回,没有任何嵌入式HTML格式。 QTextDocument支持的某些功能(例如使用特定的颜色和命名的字体)无法用“纯” Markdown表示,因此将省略它们。<br /> setMarkdown()更改文本编辑的文本。 删除所有先前的文本,并清除撤消/重做历史记录。 输入文本被解释为Markdown格式的富文本。</p> <p>markdown字符串中包含的HTML的解析与setHtml中的处理相同; 但是,不支持HTML块内的Markdown格式。</p> <p>可以通过features参数启用或禁用解析器的某些功能:<br /> Constant 描述<br /> MarkdownNoHTML Markdown文本中的任何HTML标签都将被丢弃<br /> MarkdownDialectCommonMark 解析器仅支持CommonMark标准化的功能<br /> MarkdownDialectGitHub 解析器支持GitHub语法<br /> 默认值为MarkdownDialectGitHub。<br /> 访问函数:<br /> QString toMarkdowm(QtextDocument::MarkdownFeatures features = QtextDocument::MarkdownDialectGitHub) const<br /> void setMarkdown(const QString & markdown)</p> <p>QString QTextEdit::toPlainText() const<br /> QString QTextEdit :: toPlainText()常量<br /> 以纯文本形式返回文本编辑的文本。<br /> 注意:属性plainText的Getter函数。<br /> 另请参见QTextEdit :: setPlainText()。</p> <p>Public Slots – 公共插槽<br /> void QTextEdit::append(const QString &text)<br /> 将带有text的新段落追加到文本编辑的末尾。<br /> 注意:附加的新段落将具有与当前段落相同的字符格式和块格式,具体取决于光标的位置。<br /> 另请参见currentCharFormat()和QTextCursor :: blockFormat()。</p> <p>void QTextEdit::clear()<br /> 删除文本编辑中的所有文本。<br /> 注意:<br />  撤消/重做历史也被清除。<br />  除非textCursor()已在文档开头,否则将重置currentCharFormat()。<br /> 另请参见cut(),setPlainText()和setHtml()。</p> <p>void QTextEdit::copy()<br /> 将所有选定的文本复制到剪贴板。<br /> 另请参见copyAvailable()。</p> <p>void QTextEdit::cut()<br /> 将所选文本复制到剪贴板,然后将其从文本编辑中删除。<br /> 如果没有选定的文本,则不会发生任何事情。<br /> 另请参见copy()和paste()。</p> <p>void QTextEdit::insertHtml(const QString &text)<br /> 方便位置,可在当前光标位置插入假定为html格式的文本。<br /> 它等效于:</p> <p>注意:将此功能与样式表一起使用时,样式表将仅应用于文档中的当前块。 为了在整个文档中应用样式表,请改用QTextDocument :: setDefaultStyleSheet()。</p> <p>void QTextEdit::insertPlainText(const QString &text)<br /> 方便插槽,用于在当前光标位置插入文本。<br /> 相当于</p> <p>void QTextEdit::paste()<br /> 将剪贴板中的文本粘贴到当前光标位置的文本编辑中。<br /> 如果剪贴板中没有文本,则不会发生任何事情。<br /> 要更改此函数的行为,即修改QTextEdit可以粘贴的内容以及粘贴方式,请重新实现虚拟canInsertFromMimeData()和insertFromMimeData()函数。<br /> 另请参见cut()和copy()。</p> <p>void QTextEdit::redo()<br /> 重做上一个操作。<br /> 如果没有要重做的操作,即在撤消/重做历史中没有重做步骤,则什么也不会发生。<br /> 此功能在Qt 4.2中引入。<br /> 另请参见undo()。</p> <p>void QTextEdit::scrollToAnchor(const QString &name)<br /> 滚动文本编辑,以便显示具有给定name的锚点; 如果name为空,已经可见或找不到,则不执行任何操作。</p> <p>void QTextEdit::selectAll()<br /> 选择所有文本。<br /> 另请参见copy(),cut()和textCursor()。</p> <p>void QTextEdit::setAlignment(Qt::Alignment a)<br /> 将当前段落的对齐方式设置为a。 有效的对齐方式为Qt :: AlignLeft,Qt :: AlignRight,Qt :: AlignJustify和Qt :: AlignCenter(水平居中)。<br /> 另请参见alignment()。</p> <p>void QTextEdit::setCurrentFont(const QFont &f)<br /> 将当前格式的字体设置为f。<br /> 另请参见currentFont(),setFontPointSize()和setFontFamily()。</p> <p>void QTextEdit::setFontFamily(const QString &fontFamily)<br /> 将当前格式的字体系列设置为fontFamily。<br /> 另请参见fontFamily()和setCurrentFont()。</p> <p>void QTextEdit::setFontItalic(bool italic)<br /> 如果italic为true,则将当前格式设置为斜体;否则为0。 否则将当前格式设置为非斜体。<br /> 另请参见fontItalic()。</p> <p>void QTextEdit::setFontPointSize(qreal s)<br /> 将当前格式的磅值设置为s。<br /> 注意,如果s为零或负,则此函数的行为未定义。<br /> 另请参见fontPointSize(),setCurrentFont()和setFontFamily()。</p> <p>void QTextEdit::setFontUnderline(bool underline)<br /> 如果underline为true,则将当前格式设置为下划线。 否则将当前格式设置为非下划线。<br /> 另请参见fontUnderne()。<br /> void QTextEdit::setFontWeight(int weight)<br /> 将当前格式的字体权重设置为给定的weight,其中使用的值在QFont :: Weight枚举定义的范围内。<br /> 另请参见fontWeight(),setCurrentFont()和setFontFamily()。</p> <p>html : QString<br /> 此属性为文本编辑的文本提供HTML界面。</p> <p>toHtml()以html形式返回文本编辑的文本。</p> <p>setHtml()更改文本编辑的文本。 删除所有先前的文本,并清除撤消/重做历史记录。 输入的文本被解释为html格式的富文本。 除非textCursor()已经在文档的开头,否则currentCharFormat()也会被重置。</p> <p>注意:在创建包含HTML的QString并将其传递给setHtml()时,调用者有责任确保正确解码文本。</p> <p>默认情况下,对于新创建的空文档,此属性包含用于描述没有正文文本的HTML 4.0文档的文本。<br /> 访问功能:<br /> QString toHtml() const<br /> void setHtml(const QString & text)<br /> 通知者信号:<br /> void textChanged()<br /> 另请参见受支持的HTML子集和plainText。</p> <p>markdown : QString<br /> 此属性为文本编辑的文本提供Markdown界面。</p> <p>toMarkdown()将文本编辑的文本作为“纯” Markdown返回,没有任何嵌入式HTML格式。 QTextDocument支持的某些功能(例如使用特定的颜色和命名的字体)无法用“纯” Markdown表示,因此将省略它们。<br /> setMarkdown()更改文本编辑的文本。 删除所有先前的文本,并清除撤消/重做历史记录。 输入文本被解释为Markdown格式的富文本。</p> <p>markdown字符串中包含的HTML的解析与setHtml中的处理相同; 但是,不支持HTML块内的Markdown格式。</p> <p>可以通过features参数启用或禁用解析器的某些功能:<br /> Constant 描述<br /> MarkdownNoHTML Markdown文本中的任何HTML标签都将被丢弃<br /> MarkdownDialectCommonMark 解析器仅支持CommonMark标准化的功能<br /> MarkdownDialectGitHub 解析器支持GitHub语法<br /> 默认值为MarkdownDialectGitHub。<br /> 访问函数:<br /> QString toMarkdowm(QtextDocument::MarkdownFeatures features = QtextDocument::MarkdownDialectGitHub) const<br /> void setMarkdown(const QString & markdown)</p> <p>void QTextEdit::setPlainText(const QString &text)<br /> 将文本编辑的文本更改为字符串文本。 之前的所有文字都将被删除。<br /> 注意:<br />  text被解释为纯文本。<br />  撤消/重做历史也被清除。<br />  除非textCursor()已在文档开头,否则将重置currentCharFormat()。<br /> 注意:属性plainText的Setter函数。<br /> 另请参见toPlainText()。<br /> void QTextEdit::setText(const QString &text)<br /> 设置文本编辑的text。 文本可以是纯文本或HTML,并且文本编辑将尝试猜测正确的格式。<br /> 直接使用setHtml()或setPlainText()可以避免文本编辑的猜测。<br /> 此功能在Qt 4.2中引入。<br /> 另请参见toPlainText()和toHtml()。</p> <p>void QTextEdit::setTextBackgroundColor(const QColor &c)<br /> 将当前格式的文本背景色设置为c。<br /> 此功能在Qt 4.4中引入。<br /> 另请参见textBackgroundColor()。</p> <p>void QTextEdit::setTextColor(const QColor &c<br /> 将当前格式的文本颜色设置为c。<br /> 另请参见textColor()。</p> <p>void QTextEdit::undo()<br /> 撤消上一个操作。<br /> 如果没有撤消操作,即撤消/重做历史中没有撤消步骤,则不会发生任何事情。<br /> 此功能在Qt 4.2中引入。<br /> 另请参见redo()。</p> <p>void QTextEdit::zoomIn(int range = 1)<br /> 通过扩大基本字体尺寸range点并将所有字体大小重新计算为新大小来放大文本。 这不会更改任何图像的大小。<br /> 另请参见zoomOut()。<br /> void QTextEdit::zoomOut(int range = 1)<br /> 通过缩小基本字体大小range点并将所有字体大小重新计算为新大小来缩小文本。 这不会更改任何图像的大小。<br /> 另请参见zoomIn()。</p> <p>Protected Functions – 保护函数<br /> bool QTextEdit::canInsertFromMimeData(const QMimeData *source) const<br /> 如果可以解码由source指定的MIME数据对象的内容并将其插入文档中,则此函数返回true。 例如,在拖动操作期间鼠标进入该小部件并且需要确定是否有可能接受拖放操作时,将调用此方法。<br /> 重新实现此功能以启用对其他MIME类型的拖放支持。</p> <p>QMimeData *QTextEdit::createMimeDataFromSelection() const<br /> 此函数返回一个新的MIME数据对象,以表示文本编辑的当前选择内容。 当选择需要封装到新的QMimeData对象中时,将调用此方法。 例如,当开始拖放操作或将数据复制到剪贴板时。<br /> 如果重新实现此功能,请注意,返回的QMimeData对象的所有权将传递给调用方。 可以通过使用textCursor()函数来检索选择。</p> <p>void QTextEdit::insertFromMimeData(const QMimeData *source)<br /> 此函数将由source指定的MIME数据对象的内容插入到当前光标位置的文本编辑中。 每当由于剪贴板粘贴操作而插入文本时,或者当文本编辑接受来自拖放操作的数据时,都会调用该方法。<br /> 重新实现此功能以启用对其他MIME类型的拖放支持。</p> </div><!-- .entry-content --> </div> </article><!-- #post-## --> <div class="clearfix"></div> <nav class="navigation post-navigation" role="navigation"> <h2 class="screen-reader-text">文章导航</h2> <div class="nav-links"><div class="nav-previous"><a href="http://wiki.xuetang9.com/?p=7895" rel="prev">QString 类(老九学堂C++会员友情翻译,不喜勿喷)</a></div><div class="nav-next"><a href="http://wiki.xuetang9.com/?p=7899" rel="next">QWidget 类(老九学堂C++会员友情翻译,不喜勿喷)</a></div></div> </nav><div id="comments" class="comments-area"> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title"><span></span> Leave a Comment <small><a rel="nofollow" id="cancel-comment-reply-link" href="/?p=7897#respond" style="display:none;">取消回复</a></small></h3><p class="must-log-in">要发表评论,您必须先<a href="http://wiki.xuetang9.com/wp-login.php?redirect_to=http%3A%2F%2Fwiki.xuetang9.com%2F%3Fp%3D7897">登录</a>。</p><div class="open_social_box login_box"></div> </div><!-- #respond --> </div><!-- #comments --> </main><!-- #main --> </div><!-- #primary --> <div id="secondary-right" class="at-fixed-width widget-area sidebar secondary-sidebar" role="complementary"> <div id="sidebar-section-top" class="widget-area sidebar clearfix"> <section id="meta-2" class="widget widget_meta"><h2 class="widget-title">功能</h2><div class="line"><span></span></div> <ul> <li><a href="http://wiki.xuetang9.com/wp-login.php?action=register">注册</a></li> <li><a href="http://wiki.xuetang9.com/wp-login.php">登录</a></li> <li><a href="http://wiki.xuetang9.com/?feed=rss2">文章<abbr title="Really Simple Syndication">RSS</abbr></a></li> <li><a href="http://wiki.xuetang9.com/?feed=comments-rss2">评论<abbr title="Really Simple Syndication">RSS</abbr></a></li> <li><a href="https://cn.wordpress.org/" title="基于WordPress,一个优美、先进的个人信息发布平台。">WordPress.org</a></li> </ul> </section><section id="search-2" class="widget widget_search"><div class="search-block"> <form action="http://wiki.xuetang9.com" class="searchform" id="searchform" method="get" role="search"> <div> <label for="menu-search" class="screen-reader-text"></label> <input type="text" placeholder="Search" class="menu-search" id="menu-search" name="s" value="" /> <button class="searchsubmit fa fa-search" type="submit" id="searchsubmit"></button> </div> </form> </div></section> <section id="recent-posts-2" class="widget widget_recent_entries"> <h2 class="widget-title">最赞笔记</h2><div class="line"><span></span></div> <ul> <li> <a href="http://wiki.xuetang9.com/?p=8084">数据库(三)</a> <span class="post-date">2020年12月20日</span> </li> <li> <a href="http://wiki.xuetang9.com/?p=8082">数据库 (二)</a> <span class="post-date">2020年12月19日</span> </li> <li> <a href="http://wiki.xuetang9.com/?p=8080">计算机网络 应用层</a> <span class="post-date">2020年12月17日</span> </li> <li> <a href="http://wiki.xuetang9.com/?p=8078">计算机网络 运输层</a> <span class="post-date">2020年12月17日</span> </li> <li> <a href="http://wiki.xuetang9.com/?p=8075">计算机网络 网络层</a> <span class="post-date">2020年12月16日</span> </li> </ul> </section><section id="recent-comments-2" class="widget widget_recent_comments"><h2 class="widget-title">近期评论</h2><div class="line"><span></span></div><ul id="recentcomments"><li class="recentcomments"><span class="comment-author-link">kongyubai</span>发表在《<a href="http://wiki.xuetang9.com/?p=7619#comment-39">持续更新-老九Java一阶训练营个人笔记</a>》</li><li class="recentcomments"><span class="comment-author-link">YunTtL</span>发表在《<a href="http://wiki.xuetang9.com/?p=6951#comment-35">win10配置Java开发环境</a>》</li><li class="recentcomments"><span class="comment-author-link">moon</span>发表在《<a href="http://wiki.xuetang9.com/?p=5350#comment-32">Java集合,HashMap底层实现和原理</a>》</li><li class="recentcomments"><span class="comment-author-link"><a href='http://wiki.xuetang9.com/?p=5270' rel='external nofollow' class='url'>【转载】关于JNI调用C++中文乱码的处理方法(Windows平台) – 老九维基</a></span>发表在《<a href="http://wiki.xuetang9.com/?p=5254#comment-31">修改Windows控制台默认代码页编码的几种方法</a>》</li><li class="recentcomments"><span class="comment-author-link"><a href='http://www.xuetang9.com' rel='external nofollow' class='url'>Kenny</a></span>发表在《<a href="http://wiki.xuetang9.com/?p=5212#comment-30">java.util.Scanner类的基本使用</a>》</li></ul></section><section id="categories-2" class="widget widget_categories"><h2 class="widget-title">分类目录</h2><div class="line"><span></span></div> <ul> <li class="cat-item cat-item-28"><a href="http://wiki.xuetang9.com/?cat=28">从零到一学编程系列之C语言</a> (3) </li> <li class="cat-item cat-item-32"><a href="http://wiki.xuetang9.com/?cat=32">Python</a> (21) </li> <li class="cat-item cat-item-33"><a href="http://wiki.xuetang9.com/?cat=33">Java设计模式</a> (16) </li> <li class="cat-item cat-item-55"><a href="http://wiki.xuetang9.com/?cat=55">产品相关</a> (2) </li> <li class="cat-item cat-item-69"><a href="http://wiki.xuetang9.com/?cat=69">Java面向对象</a> (1) </li> <li class="cat-item cat-item-71"><a href="http://wiki.xuetang9.com/?cat=71">JavaWeb</a> (2) </li> <li class="cat-item cat-item-72"><a href="http://wiki.xuetang9.com/?cat=72">MySQL数据库</a> (1) </li> <li class="cat-item cat-item-73"><a href="http://wiki.xuetang9.com/?cat=73">H5+CSS3+JS</a> (14) </li> <li class="cat-item cat-item-75"><a href="http://wiki.xuetang9.com/?cat=75">训练营相关知识点系列</a> (24) </li> <li class="cat-item cat-item-88"><a href="http://wiki.xuetang9.com/?cat=88">行业视野</a> (1) </li> <li class="cat-item cat-item-624"><a href="http://wiki.xuetang9.com/?cat=624">QT编程</a> (49) </li> <li class="cat-item cat-item-14"><a href="http://wiki.xuetang9.com/?cat=14" title="用于帮助大家使用建立的一系列指导性文章,通常是工具的使用">教程</a> (20) <ul class='children'> <li class="cat-item cat-item-34"><a href="http://wiki.xuetang9.com/?cat=34">训练营串讲-教程</a> (2) </li> </ul> </li> <li class="cat-item cat-item-10"><a href="http://wiki.xuetang9.com/?cat=10">课后作业</a> (15) </li> <li class="cat-item cat-item-4"><a href="http://wiki.xuetang9.com/?cat=4">编程学习心得</a> (165) </li> <li class="cat-item cat-item-11"><a href="http://wiki.xuetang9.com/?cat=11">C语言</a> (25) </li> <li class="cat-item cat-item-3"><a href="http://wiki.xuetang9.com/?cat=3">Java学习笔记</a> (50) </li> <li class="cat-item cat-item-1"><a href="http://wiki.xuetang9.com/?cat=1">Bug/Error类</a> (17) </li> <li class="cat-item cat-item-12"><a href="http://wiki.xuetang9.com/?cat=12">其他编程语言</a> (4) </li> </ul> </section><section id="archives-2" class="widget widget_archive"><h2 class="widget-title">文章归档</h2><div class="line"><span></span></div> <label class="screen-reader-text" for="archives-dropdown-2">文章归档</label> <select id="archives-dropdown-2" name="archive-dropdown"> <option value="">选择月份</option> <option value='http://wiki.xuetang9.com/?m=202012'> 2020年12月  (8)</option> <option value='http://wiki.xuetang9.com/?m=202011'> 2020年11月  (1)</option> <option value='http://wiki.xuetang9.com/?m=202008'> 2020年8月  (1)</option> <option value='http://wiki.xuetang9.com/?m=202007'> 2020年7月  (1)</option> <option value='http://wiki.xuetang9.com/?m=202006'> 2020年6月  (3)</option> <option value='http://wiki.xuetang9.com/?m=202005'> 2020年5月  (39)</option> <option value='http://wiki.xuetang9.com/?m=202004'> 2020年4月  (29)</option> <option value='http://wiki.xuetang9.com/?m=202003'> 2020年3月  (4)</option> <option value='http://wiki.xuetang9.com/?m=202002'> 2020年2月  (12)</option> <option value='http://wiki.xuetang9.com/?m=202001'> 2020年1月  (1)</option> <option value='http://wiki.xuetang9.com/?m=201912'> 2019年12月  (18)</option> <option value='http://wiki.xuetang9.com/?m=201911'> 2019年11月  (1)</option> <option value='http://wiki.xuetang9.com/?m=201910'> 2019年10月  (18)</option> <option value='http://wiki.xuetang9.com/?m=201909'> 2019年9月  (4)</option> <option value='http://wiki.xuetang9.com/?m=201908'> 2019年8月  (3)</option> <option value='http://wiki.xuetang9.com/?m=201907'> 2019年7月  (25)</option> <option value='http://wiki.xuetang9.com/?m=201906'> 2019年6月  (8)</option> <option value='http://wiki.xuetang9.com/?m=201905'> 2019年5月  (1)</option> <option value='http://wiki.xuetang9.com/?m=201904'> 2019年4月  (10)</option> <option value='http://wiki.xuetang9.com/?m=201902'> 2019年2月  (1)</option> <option value='http://wiki.xuetang9.com/?m=201812'> 2018年12月  (1)</option> <option value='http://wiki.xuetang9.com/?m=201811'> 2018年11月  (17)</option> <option value='http://wiki.xuetang9.com/?m=201806'> 2018年6月  (7)</option> <option value='http://wiki.xuetang9.com/?m=201805'> 2018年5月  (25)</option> <option value='http://wiki.xuetang9.com/?m=201804'> 2018年4月  (13)</option> <option value='http://wiki.xuetang9.com/?m=201802'> 2018年2月  (2)</option> <option value='http://wiki.xuetang9.com/?m=201801'> 2018年1月  (7)</option> <option value='http://wiki.xuetang9.com/?m=201712'> 2017年12月  (95)</option> <option value='http://wiki.xuetang9.com/?m=201711'> 2017年11月  (48)</option> <option value='http://wiki.xuetang9.com/?m=201706'> 2017年6月  (1)</option> </select> <script type='text/javascript'> /* <![CDATA[ */ (function() { var dropdown = document.getElementById( "archives-dropdown-2" ); function onSelectChange() { if ( dropdown.options[ dropdown.selectedIndex ].value !== '' ) { document.location.href = this.options[ this.selectedIndex ].value; } } dropdown.onchange = onSelectChange; })(); /* ]]> */ </script> </section> </div> </div> </div><!-- #content --> <div class="clearfix"></div> <footer class="site-footer"> <div class="copy-right"> <div class='container'> <div class="row"> <div class="col-sm-6 init-animate"> <div class="footer-copyright text-left"> <p class="at-display-inline-block"> © All right reserved 2017 </p> <div class="site-info at-display-inline-block">Medical Circle by <a href="http://www.acmethemes.com/" rel="designer">Acme Themes</a></div><!-- .site-info --> </div> </div> <div class="col-sm-6 init-animate"> <div class='at-first-level-nav text-right'><div class="menu"><ul> <li class="page_item page-item-2"><a href="http://wiki.xuetang9.com/?page_id=2">Welcome!</a></li> </ul></div> </div> </div> </div> </div> <a href="#page" class="sm-up-container"><i class="fa fa-angle-up sm-up"></i></a> </div> </footer> </div><!-- #page --> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = {"visibility_show":"show","visibility_hide":"hide","width":"Auto"}; /* ]]> */ </script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-content/plugins/table-of-contents-plus/front.min.js?ver=1509'></script> <script type='text/javascript' src='http://cdn.jsdelivr.net/wp/wp-editormd/tags/10.0.3/assets/Emojify.js/js/emojify.min.js?ver=10.0.3'></script> <script type='text/javascript' src='http://cdn.jsdelivr.net/wp/wp-editormd/tags/10.0.3/assets/ClipBoard/clipboard.min.js?ver=2.0.1'></script> <script type='text/javascript' src='http://cdn.jsdelivr.net/wp/wp-editormd/tags/10.0.3/assets/Prism.js/components/prism-core.min.js?ver=1.15.0'></script> <script type='text/javascript' src='http://cdn.jsdelivr.net/wp/wp-editormd/tags/10.0.3/assets/Prism.js/plugins/autoloader/prism-autoloader.min.js?ver=1.15.0'></script> <script type='text/javascript' src='http://cdn.jsdelivr.net/wp/wp-editormd/tags/10.0.3/assets/Prism.js/plugins/line-numbers/prism-line-numbers.min.js?ver=1.15.0'></script> <script type='text/javascript' src='http://cdn.jsdelivr.net/wp/wp-editormd/tags/10.0.3/assets/Prism.js/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js?ver=1.15.0'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-content/themes/medical-circle/assets/library/slick/slick.min.js?ver=1.1.2'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-content/themes/medical-circle/acmethemes/core/js/skip-link-focus-fix.js?ver=20130115'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-content/themes/medical-circle/assets/library/bootstrap/js/bootstrap.min.js?ver=3.3.6'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-content/themes/medical-circle/assets/library/wow/js/wow.min.js?ver=1.1.2'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-content/themes/medical-circle/assets/library/magnific-popup/jquery.magnific-popup.min.js?ver=1.1.0'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-content/themes/medical-circle/assets/js/medical-circle-custom.js?ver=1.0.1'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-includes/js/imagesloaded.min.js?ver=3.2.0'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-includes/js/masonry.min.js?ver=3.3.2'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-includes/js/comment-reply.min.js?ver=5.2.12'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-content/plugins/open-social/images/os.js?ver=5.2.12'></script> <script type='text/javascript' src='http://wiki.xuetang9.com/wp-includes/js/wp-embed.min.js?ver=5.2.12'></script> <script type="text/javascript"> window.onload = function () { emojify.setConfig({ img_dir: "http://cdn.jsdelivr.net/wp/wp-editormd/tags/10.0.3/assets/Emojify.js/images/basic",//前端emoji资源地址 blacklist: { 'ids': [], 'classes': ['no-emojify'], 'elements': ['^script$', '^textarea$', '^pre$', '^code$'] } }); emojify.run(); } </script> <script type="text/javascript"> Prism.plugins.autoloader.languages_path = "http://cdn.jsdelivr.net/wp/wp-editormd/tags/10.0.3/assets/Prism.js/components/"; </script> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script></body> </html>