📄 qtextedit.html
字号:
<li><div class=fn>virtual void <a href="#placeCursor"><b>placeCursor</b></a> ( const QPoint & pos, QTextCursor * c = 0 )</div></li>
<li><div class=fn>virtual void <a href="#moveCursor"><b>moveCursor</b></a> ( CursorAction action, bool select )</div></li>
<li><div class=fn>virtual void <a href="#doKeyboardAction"><b>doKeyboardAction</b></a> ( KeyboardAction action )</div></li>
<li><div class=fn>virtual void <a href="#removeSelectedText"><b>removeSelectedText</b></a> ( int selNum = 0 )</div></li>
<li><div class=fn>virtual void <a href="#removeSelection"><b>removeSelection</b></a> ( int selNum = 0 )</div></li>
<li><div class=fn>virtual void <a href="#setCurrentFont"><b>setCurrentFont</b></a> ( const QFont & f )</div></li>
<li><div class=fn>virtual void <a href="#setOverwriteMode"><b>setOverwriteMode</b></a> ( bool b )</div></li>
<li><div class=fn>virtual void <a href="#scrollToBottom"><b>scrollToBottom</b></a> ()</div></li>
<li><div class=fn>virtual void <a href="#insert"><b>insert</b></a> ( const QString & text, bool indent = FALSE, bool checkNewLine = TRUE, bool removeSelected = TRUE )</div></li>
<li><div class=fn>virtual void <a href="#insertAt"><b>insertAt</b></a> ( const QString & text, int para, int index )</div></li>
<li><div class=fn>virtual void <a href="#removeParagraph"><b>removeParagraph</b></a> ( int para )</div></li>
<li><div class=fn>virtual void <a href="#insertParagraph"><b>insertParagraph</b></a> ( const QString & text, int para )</div></li>
<li><div class=fn>virtual void <a href="#setParagraphBackgroundColor"><b>setParagraphBackgroundColor</b></a> ( int para, const QColor & bg )</div></li>
<li><div class=fn>virtual void <a href="#clearParagraphBackground"><b>clearParagraphBackground</b></a> ( int para )</div></li>
<li><div class=fn>virtual void <a href="#setUndoRedoEnabled"><b>setUndoRedoEnabled</b></a> ( bool b )</div></li>
</ul>
<h2>信号</h2>
<ul>
<li><div class=fn>void <a href="#textChanged"><b>textChanged</b></a> ()</div></li>
<li><div class=fn>void <a href="#selectionChanged"><b>selectionChanged</b></a> ()</div></li>
<li><div class=fn>void <a href="#copyAvailable"><b>copyAvailable</b></a> ( bool yes )</div></li>
<li><div class=fn>void <a href="#undoAvailable"><b>undoAvailable</b></a> ( bool yes )</div></li>
<li><div class=fn>void <a href="#redoAvailable"><b>redoAvailable</b></a> ( bool yes )</div></li>
<li><div class=fn>void <a href="#currentFontChanged"><b>currentFontChanged</b></a> ( const QFont & f )</div></li>
<li><div class=fn>void <a href="#currentColorChanged"><b>currentColorChanged</b></a> ( const QColor & c )</div></li>
<li><div class=fn>void <a href="#currentAlignmentChanged"><b>currentAlignmentChanged</b></a> ( int a )</div></li>
<li><div class=fn>void <a href="#currentVerticalAlignmentChanged"><b>currentVerticalAlignmentChanged</b></a> ( VerticalAlignment a )</div></li>
<li><div class=fn>void <a href="#cursorPositionChanged"><b>cursorPositionChanged</b></a> ( QTextCursor * c )</div></li>
<li><div class=fn>void <a href="#cursorPositionChanged-2"><b>cursorPositionChanged</b></a> ( int para, int pos )</div></li>
<li><div class=fn>void <a href="#returnPressed"><b>returnPressed</b></a> ()</div></li>
<li><div class=fn>void <a href="#modificationChanged"><b>modificationChanged</b></a> ( bool m )</div></li>
</ul>
<h2>属性</h2>
<ul>
<li><div class=fn>QString <a href="#documentTitle-prop"><b>documentTitle</b></a> - 从文本中分析出的文档标题 <em>(只读)</em></div></li>
<li><div class=fn>bool <a href="#hasSelectedText-prop"><b>hasSelectedText</b></a> - 是否有文本被选择到选择区0中 <em>(只读)</em></div></li>
<li><div class=fn>int <a href="#length-prop"><b>length</b></a> - 文本的字符数 <em>(只读)</em></div></li>
<li><div class=fn>bool <a href="#linkUnderline-prop"><b>linkUnderline</b></a> - 超文本链接是否使用下划线</div></li>
<li><div class=fn>bool <a href="#modified-prop"><b>modified</b></a> - 文档是否已经被用户修改</div></li>
<li><div class=fn>bool <a href="#overwriteMode-prop"><b>overwriteMode</b></a> - 文本编辑的覆盖模式</div></li>
<li><div class=fn>QBrush <a href="#paper-prop"><b>paper</b></a> - 背景(纸)的画刷</div></li>
<li><div class=fn>bool <a href="#readOnly-prop"><b>readOnly</b></a> - 文本编辑是否只读</div></li>
<li><div class=fn>QString <a href="#selectedText-prop"><b>selectedText</b></a> - 被选择的文本(在选择区0中)或者如果当前没有被选择的文本(在选择区0中)就是空字符串 <em>(只读)</em></div></li>
<li><div class=fn>int <a href="#tabStopWidth-prop"><b>tabStopWidth</b></a> - tab stop的象素宽度s</div></li>
<li><div class=fn>QString <a href="#text-prop"><b>text</b></a> - 文本编辑的文本</div></li>
<li><div class=fn>TextFormat <a href="#textFormat-prop"><b>textFormat</b></a> - 文本格式:多信息文本、一般文本或者自动文本</div></li>
<li><div class=fn>int <a href="#undoDepth-prop"><b>undoDepth</b></a> - 撤销历史的深度</div></li>
<li><div class=fn>bool <a href="#undoRedoEnabled-prop"><b>undoRedoEnabled</b></a> - 撤销/恢复是否生效</div></li>
<li><div class=fn>WordWrap <a href="#wordWrap-prop"><b>wordWrap</b></a> - 自动换行模式</div></li>
<li><div class=fn>int <a href="#wrapColumnOrWidth-prop"><b>wrapColumnOrWidth</b></a> - 被自动换行的文本的位置(根据自动换行模式来决定是像素还是列)</div></li>
<li><div class=fn>WrapPolicy <a href="#wrapPolicy-prop"><b>wrapPolicy</b></a> - 自动换行策略,在空白符号还是在任何地方</div></li>
</ul>
<h2>保护成员</h2>
<ul>
<li><div class=fn>void <a href="#repaintChanged"><b>repaintChanged</b></a> ()</div></li>
<li><div class=fn>virtual void <a href="#keyPressEvent"><b>keyPressEvent</b></a> ( QKeyEvent * e )</div></li>
<li><div class=fn>virtual bool <a href="#focusNextPrevChild"><b>focusNextPrevChild</b></a> ( bool n )</div></li>
<li><div class=fn>QTextCursor * <a href="#textCursor"><b>textCursor</b></a> () const</div></li>
<li><div class=fn>virtual QPopupMenu * <a href="#createPopupMenu"><b>createPopupMenu</b></a> ( const QPoint & pos )</div></li>
<li><div class=fn>virtual QPopupMenu * createPopupMenu () <em>(obsolete)</em></div></li>
</ul>
<hr><a name="details"></a><h2>详细描述</h2>
QTextEdit窗口部件提供了强大的单页面的多信息文本编辑器。
<p>
<p> <!-- toc -->
<ul>
<li><a href="#1"> 介绍和概念
</a>
<li><a href="#1-1"> 使用QTextEdit作为一个显示窗口部件
</a>
<ul>
<li><a href="#1-1-1"> 只读的键绑定
</a>
</ul>
<li><a href="#1-2"> 使用QTextEdit作为一个编辑器
</a>
<ul>
<li><a href="#1-2-1"> 编辑键绑定
</a>
</ul>
</ul>
<!-- endtoc -->
<p> <h3> 介绍和概念
</h3>
<a name="1"></a><p> QTextEdit是一个高级的所见即所得的支持使用HTML风格标记的多信息文本格式的查看器/编辑器。它对于处理大文档和快速相应用户的输入进行了优化。
<p> QTextEdit操作的三个模式:
<center><table cellpadding="4" cellspacing="2" border="0">
<tr bgcolor="#a2c511"> <th valign="top">模式 <th valign="top">命令 <th valign="top">注释
<tr bgcolor="#f0f0f0"> <td valign="top">一般文本编辑器 <td valign="top">setTextFormat(PlainText)
<td valign="top">使用<a href="#setText">setText</a>()设置文本,<a href="#text">text</a>()可以返回一般文本。文本属性(比如颜色)可以被设置,但是一般文本总是被返回。<sup>1.</sup>
<tr bgcolor="#d0d0d0"> <td valign="top">多信息文本编辑器 <td valign="top">setTextFormat(RichText)
<td valign="top">使用<a href="#setText">setText</a>()设置文本,<a href="#text">text</a>()可以返回多信息文本。多信息文本编辑是相当受限制的。例如你不能设置边白或者插入图片(尽管你可以读取并且正确地显示具有边白和包含图片的文件)。这个模式对于编辑少量的多信息文本是非常有用的。<sup>2.</sup>
<tr bgcolor="#f0f0f0"> <td valign="top">文本查看器<sup>3.</sup> <td valign="top">setReadOnly(TRUE)
<td valign="top">使用setText()或<a href="#append">append</a>()(这个没有撤销历史,所以更快并且使用更少的内存)来设置文本,text()根据<a href="#textFormat">textFormat</a>()返回一般文本或者多信息文本。这个模式可以正确显示HTML中一个比较大的子集。
</table></center>
<p> <sup>1.</sup><small>我们<em>不</em>建议使用QTextEdit来创建语法高亮的编辑器,因为现在的应用编程接口对于这个目的是不够的。我们希望能在以后的发行中发行一个支持语法高亮的更加完整的应用编程接口。</small>
<p> <sup>2.</sup><small>在稍后的Qt发行中计划推出一个更完整的支持设置边白、图片等等的应用编程接口。</small>
<p> <sup>3.</sup><small>Qt 3.1将提供一个日志浏览器模式,它是专门为快速地并且有效使用内存地显示大量的只读文本而优化的。</small>
<p> 我们建议你总是调用<a href="#setTextFormat">setTextFormat</a>()来设置你想使用的模式。如果你是用<a href="qt.html#TextFormat-enum">AutoText</a>,那么<a href="#setText">setText</a>()和<a href="#append">append</a>()将会试图决定给定的文本是一般文本还是多信息文本。如果你使用<a href="qt.html#TextFormat-enum">RichText</a>,那么setText()和append()总是假设给定的文本是多信息文本。<a href="#insert">insert</a>()简单的插入给定的文本。
<p> QTextEdit在段落和字符上工作。段落就是被自动换行来适应窗口部件的宽度的被格式化的字符串。默认情况下当读取一般文本时,两个换行符确定一个段落。一个文档由零或更多个段落组成,索引从0开始。字符是基于每一个段落来被索引的,也是从0开始。段落中的单字根据段落的<a href="#alignment">alignment</a>()进行对齐。段落被硬换行分隔。段落中的字符都有自己的属性,例如字体和颜色。
<p> 文本编辑文档使用如下概念:
<ul>
<li> <em>当前格式</em> -- 这是当前光标位置的格式,如果存在被选择文本,<em>也是</em>它的格式。
<li> <em>当前段落</em> -- 包含光标的段落。
</ul>
<p> QTextEdit可以显示图片(使用<a href="qmimesourcefactory.html">QMimeSourceFactory</a>)、列表和表格。如果文本太大以至于不能在文本编辑的视口中查看时,滚动条将会出现。文本编辑可以载入一般文本和HTML文件(HTML3.2和4的子集)。表现风格和有效标记集由<a href="#styleSheet">styleSheet</a>()来定义。自定义标记可以被创建并且被放置到样式单中。可以使用<a href="#setStyleSheet">setStyleSheet</a>()改变样式单,具体情况请参考<a href="qstylesheet.html">QStyleSheet</a>。通过图片标记识别的图片如果它们可以被使用文本编辑的<a href="qmimesourcefactory.html">QMimeSourceFactory</a>解释的话就可以被显示,请参考<a href="#setMimeSourceFactory">setMimeSourceFactory</a>()。
<p> 如果你想要一个有更多导航的文本浏览器,请使用<a href="qtextbrowser.html">QTextBrowser</a>。如果你只是想显示一小条多信息文本,请使用<a href="qlabel.html">QLabel</a>或者<a href="qsimplerichtext.html">QSimpleRichText</a>。
<p> 如果你创建一个新的QTextEdit并且想允许用户编辑多信息文本,请调用<a href="#setTextFormat">setTextFormat</a>(Qt::RichText)来确保文本被看做多信息文本。(多信息文本使用HTML标记来设置文本格式属性。关于被支持的HTML标记的信息请参考QStyleSheet。)如果你不明确地调用setTextFormat(),文本编辑将会猜测文本自己是多信息文本还是一般文本。这也就是说如果文本看起来像HTML或XML,它可能被解释为多信息文本,所以你应该调用setTextFormat(Qt::PlainText)来保护这些文本。
<p> 注意我们并不是要为Qt添加一个具有所有特征的网页浏览器窗口部件(因为这将很容易使Qt的大小加倍并且只有很少的应用程序可以从这里受益)。Qt中的多信息文本支持是被设计为应用程序提供一个快速、可移植并且有效率地方式来添加合理的<a href="helpsystem.html#online-help">在线帮助</a>工具,并且提供一个多信息文本编辑器的基础。
<h3> 使用QTextEdit作为一个显示窗口部件
</h3>
<a name="1-1"></a><p> QTextEdit可以显示一个包括表格和图片的大的HTML子集。
<p> 文本通过使用<a href="#setText">setText</a>()来设置或者替换,它删除任何已经存在的文本并且用传递给setText()调用的文本替换它。如果你使用继承HTML(强制使用<a href="#setTextFormat">setTextFormat</a>(RichText))调用setText(),并且然后调用<a href="#text">text</a>(),返回的文本可能有不同的标签,但是它们呈现的都是一样的。文本可以使用<a href="#insert">insert</a>()、<a href="#paste">paste</a>()、<a href="#pasteSubType">pasteSubType</a>()和<a href="#append">append</a>()来插入。被添加的文本没有进入撤销历史中,这使得append()更快并且消耗更少的内存。文本也可以被<a href="#cut">cut</a>()。整个文本可以使用<a href="#clear">clear</a>()来被删除并且被选择的文本可以使用<a href="#removeSelectedText">removeSelectedText</a>()来被删除。被选择(被标记)的文本也可以使用<a href="#del">del</a>()来被删除(如果没有文本被选择,这将删除光标右面的字符)。
<p> 可以使用<a href="#setText">setText</a>()和text()来达到载入和保存文本的目的,例如:
<pre>
<a href="qfile.html">QFile</a> file( fileName ); // 从文件中读取文本
if ( file.<a href="qfile.html#open">open</a>( <a href="qfile.html#open">IO_ReadOnly</a> ) ) {
<a href="qtextstream.html">QTextStream</a> ts( &file );
textEdit->setText( ts.<a href="qtextstream.html#read">read</a>() );
}
</pre>
<pre>
<a href="qfile.html">QFile</a> file( fileName ); // 把文本写入到文件中
if ( file.<a href="qfile.html#open">open</a>( <a href="qfile.html#open">IO_WriteOnly</a> ) ) {
<a href="qtextstream.html">QTextStream</a> ts( &file );
ts << textEdit->text();
textEdit->setModified( FALSE );
}
</pre>
<p> 默认这个文本编辑会在空白符号处自动换行来适应文本编辑窗口部件。<a href="#setWordWrap">setWordWrap</a>()函数用来指定你想要的自动换行方式,或者如果你不像要任何自动换行,请使用<a href="#WordWrap-enum">NoWrap</a>。调用setWordWrap()来设置固定的像素宽度<a href="#WordWrap-enum">FixedPixelWidth</a>,或者由<a href="#setWrapColumnOrWidth">setWrapColumnOrWidth</a>()确定的像素或者列数的字符列数(例如80列)<a href="#WordWrap-enum">FixedColumnWidth</a>。如果你是用自动换行来适应窗口部件的宽度<a href="#WordWrap-enum">WidgetWidth</a>,你可以使用<a href="#setWrapPolicy">setWrapPolicy</a>()来指定是在空白符号或者任何地方自动换行。
<p> 背景色的设置与其它窗口部件不同,使用<a href="#setPaper">setPaper</a>()。你可以指定画刷风格是一个普通颜色或者一个复杂的像素映射。
<p> 超文本链接可以自动加上下划线,这个可以通过<a href="#setLinkUnderline">setLinkUnderline</a>()来改变。tab stop宽度可以使用<a href="#setTabStopWidth">setTabStopWidth</a>()来设置。
<p> <a href="#zoomIn">zoomIn</a>()和<a href="#zoomOut">zoomOut</a>()函数能够用来通过增加(对于zoomOut()是减少)使用的点的大小来重新定义文本的大小。
<p> <a href="#lines">lines</a>()函数返回文本中的行数并且<a href="#paragraphs">paragraphs</a>()返回段落数。特定段落中的函数可以通过<a href="#linesOfParagraph">linesOfParagraph</a>()返回。整个文本的字符长度可以通过<a href="#length">length</a>()返回。
<p> 你可以滚动到文本中的一个锚,也就是通过<a href="#scrollToAnchor">scrollToAnchor</a>()到达<tt><a name="anchor"></tt>。<a href="#find">find</a>()函数可以被用来找到和选择文本中的给定字符串。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -