<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # QSyntaxHighlighter Class Reference ## [[QtGui](index.htm) module] 該QSyntaxHighlighter類允許你定義語法高亮規則,除了可以使用類來查詢文檔的當前格式或用戶數據。[More...](#details) 繼承[QObject](qobject.html)。 ### Methods * `__init__ (self, QTextEdit?parent)` * `__init__ (self, QTextDocument?parent)` * `__init__ (self, QObject?parent)` * `QTextBlock currentBlock (self)` * `int currentBlockState (self)` * `QTextBlockUserData currentBlockUserData (self)` * `QTextDocument document (self)` * `QTextCharFormat format (self, int?pos)` * `highlightBlock (self, QString?text)` * `int previousBlockState (self)` * `rehighlight (self)` * `rehighlightBlock (self, QTextBlock?block)` * `setCurrentBlockState (self, int?newState)` * `setCurrentBlockUserData (self, QTextBlockUserData?data)` * `setDocument (self, QTextDocument?doc)` * `setFormat (self, int?start, int?count, QTextCharFormat?format)` * `setFormat (self, int?start, int?count, QColor?color)` * `setFormat (self, int?start, int?count, QFont?font)` * * * ## Detailed Description 該QSyntaxHighlighter類允許你定義語法高亮規則,除了可以使用類來查詢文檔的當前格式或用戶數據。 該QSyntaxHighlighter類是實現一個基類[QTextEdit](qtextedit.html)語法熒光筆。語法highligher自動突出顯示文本的部分在[QTextEdit](qtextedit.html),或更一般地在一個[QTextDocument](qtextdocument.html)。當用戶以特定的格式(例如源代碼)輸入文字,并幫助用戶讀取文本并識別語法錯誤語法熒光筆經常被使用。 提供自己的語法高亮,你必須繼承QSyntaxHighlighter和重新實現[highlightBlock](qsyntaxhighlighter.html#highlightBlock)( ) 。 當您創建您的QSyntaxHighlighter子類的實例,傳遞給它[QTextEdit](qtextedit.html) or [QTextDocument](qtextdocument.html)您想要的語法高亮被應用到。例如: ``` [QTextEdit](qtextedit.html) *editor = new [QTextEdit](qtextedit.html); MyHighlighter *highlighter = new MyHighlighter(editor->document()); ``` 在此之后你[highlightBlock](qsyntaxhighlighter.html#highlightBlock)( )函數將自動被調用時必要的。使用您的[highlightBlock](qsyntaxhighlighter.html#highlightBlock)( )函數(如設置字體和顏色)套用格式來傳遞給它的文本。 QSyntaxHighlighter提供[setFormat](qsyntaxhighlighter.html#setFormat)()函數,它適用于一個給定的[QTextCharFormat](qtextcharformat.html)對當前文本塊。例如: ``` void MyHighlighter.highlightBlock(const [QString](qstring.html) &text) { [QTextCharFormat](qtextcharformat.html) myClassFormat; myClassFormat.setFontWeight([QFont](qfont.html).Bold); myClassFormat.setForeground([Qt](qt.html).darkMagenta); [QString](qstring.html) pattern = "\\bMy[A-Za-z]+\\b"; [QRegExp](qregexp.html) expression(pattern); int index = text.indexOf(expression); while (index >= 0) { int length = expression.matchedLength(); setFormat(index, length, myClassFormat); index = text.indexOf(expression, index + length); } } ``` 一些語法可以跨越數個文字塊結構。例如,一個C + +的語法高亮顯示應該能夠應付`/``*...*``/`多行注釋。為了應對這些情況下,有必要知道以前的文本塊的結束狀態(例如“在注釋” ) 。 在你的[highlightBlock](qsyntaxhighlighter.html#highlightBlock)()實現可以使用查詢以前的文本塊的結束狀態[previousBlockState](qsyntaxhighlighter.html#previousBlockState)()函數。解析模塊后,您可以使用保存最后狀態[setCurrentBlockState](qsyntaxhighlighter.html#setCurrentBlockState)( ) 。 該[currentBlockState](qsyntaxhighlighter.html#currentBlockState)()和[previousBlockState](qsyntaxhighlighter.html#previousBlockState)( )函數返回一個int值。如果沒有狀態設置,返回值為-1 。您可以指定任何其他值使用,以確定任何給定的狀態[setCurrentBlockState](qsyntaxhighlighter.html#setCurrentBlockState)()函數。一旦狀態被設定在[QTextBlock](qtextblock.html)保持該值直到它被設置重新設置或直到文本的相應段落被刪除。 例如,如果你正在寫一個簡單的C + +語法高亮,你可能會指定1來表示“在注釋” : ``` [QTextCharFormat](qtextcharformat.html) multiLineCommentFormat; multiLineCommentFormat.setForeground([Qt](qt.html).red); [QRegExp](qregexp.html) startExpression("/\\*"); [QRegExp](qregexp.html) endExpression("\\*/"); setCurrentBlockState(0); int startIndex = 0; if (previousBlockState() != 1) startIndex = text.indexOf(startExpression); while (startIndex >= 0) { int endIndex = text.indexOf(endExpression, startIndex); int commentLength; if (endIndex == -1) { setCurrentBlockState(1); commentLength = text.length() - startIndex; } else { commentLength = endIndex - startIndex + endExpression.matchedLength(); } setFormat(startIndex, commentLength, multiLineCommentFormat); startIndex = text.indexOf(startExpression, startIndex + commentLength); } ``` 在上面的例子中,我們首先設置當前塊的狀態為0。然后,如果前面的程序段中的注釋結束,我們從當前塊的開頭higlight (`startIndex = 0`) 。否則,我們搜索給定的起始表達。如果指定的結束表達式不能在文本塊中被發現,我們通過調用改變當前塊的狀態[setCurrentBlockState](qsyntaxhighlighter.html#setCurrentBlockState)( ) ,并確保該塊的其馀部分是higlighted 。 此外,您可以使用查詢當前格式和用戶數據[format](qsyntaxhighlighter.html#format)()和[currentBlockUserData](qsyntaxhighlighter.html#currentBlockUserData)( )分別為功能。您還可以將用戶的數據使用附加到當前文本塊[setCurrentBlockUserData](qsyntaxhighlighter.html#setCurrentBlockUserData)()函數。[QTextBlockUserData](qtextblockuserdata.html)可以用來存儲自定義設置。在語法高亮的情況下,特別是有趣的,因為緩存中存儲的信息,你可以找出在分析段落的文字。有關示例,請參見[setCurrentBlockUserData](qsyntaxhighlighter.html#setCurrentBlockUserData)( )的文檔。 * * * ## Method Documentation ``` QSyntaxHighlighter.__init__ (self, QTextEdit?parent) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個[QSyntaxHighlighter](qsyntaxhighlighter.html)用給定的_parent_。 ``` QSyntaxHighlighter.__init__ (self, QTextDocument?parent) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個[QSyntaxHighlighter](qsyntaxhighlighter.html)并在安裝它_parent_。指定[QTextDocument](qtextdocument.html)也成為了車主[QSyntaxHighlighter](qsyntaxhighlighter.html)。 ``` QSyntaxHighlighter.__init__ (self, QObject?parent) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個[QSyntaxHighlighter](qsyntaxhighlighter.html)并在安裝它_parent_的[QTextDocument](qtextdocument.html)。指定[QTextEdit](qtextedit.html)也成為了車主[QSyntaxHighlighter](qsyntaxhighlighter.html)。 ``` QTextBlock QSyntaxHighlighter.currentBlock (self) ``` [ 返回當前文本塊。 此功能被引入Qt的4.4 。 ``` int QSyntaxHighlighter.currentBlockState (self) ``` 返回當前文本塊的狀態。如果未設置任何值,則返回值為-1 。 ](qtextblock.html) [**See also**](qtextblock.html) [setCurrentBlockState](qsyntaxhighlighter.html#setCurrentBlockState)( ) 。 ``` QTextBlockUserData QSyntaxHighlighter.currentBlockUserData (self) ``` [](qtextblockuserdata.html) [返回](qtextblockuserdata.html)[QTextBlockUserData](qtextblockuserdata.html)反對先前附加到當前文本塊。 **See also** [QTextBlock.userData](qtextblock.html#userData)()和[setCurrentBlockUserData](qsyntaxhighlighter.html#setCurrentBlockUserData)( ) 。 ``` QTextDocument QSyntaxHighlighter.document (self) ``` [](qtextdocument.html) [返回](qtextdocument.html)[QTextDocument](qtextdocument.html)在這本語法高亮顯示已安裝。 **See also** [setDocument](qsyntaxhighlighter.html#setDocument)( ) 。 ``` QTextCharFormat QSyntaxHighlighter.format (self, int?pos) ``` [ 返回格式,_position_里面的語法高亮顯示當前的文本塊。 ](qtextcharformat.html) [**See also**](qtextcharformat.html) [setFormat](qsyntaxhighlighter.html#setFormat)( ) 。 ``` QSyntaxHighlighter.highlightBlock (self, QString?text) ``` 這種方法是抽象的,應在任何子類中重新實現。 亮點給定的文本塊。這個功能是由富文本引擎在必要時調用,即對已改變的文本塊。 提供自己的語法高亮,你必須繼承[QSyntaxHighlighter](qsyntaxhighlighter.html)并重新實現highlightBlock ( ) 。在你重新實現,你應該分析該區塊的_text_和呼叫[setFormat](qsyntaxhighlighter.html#setFormat)()視需要來應用你需要的任何字體和顏色的變化。例如: ``` void MyHighlighter.highlightBlock(const [QString](qstring.html) &text) { [QTextCharFormat](qtextcharformat.html) myClassFormat; myClassFormat.setFontWeight([QFont](qfont.html).Bold); myClassFormat.setForeground([Qt](qt.html).darkMagenta); [QString](qstring.html) pattern = "\\bMy[A-Za-z]+\\b"; [QRegExp](qregexp.html) expression(pattern); int index = text.indexOf(expression); while (index >= 0) { int length = expression.matchedLength(); setFormat(index, length, myClassFormat); index = text.indexOf(expression, index + length); } } ``` 一些語法可以跨越數個文字塊結構。例如,一個C + +的語法高亮顯示應該能夠應付`/``*...*``/`多行注釋。為了應對這些情況下,有必要知道以前的文本塊的結束狀態(例如“在注釋” ) 。 在你的highlightBlock ()實現可以使用查詢以前的文本塊的結束狀態[previousBlockState](qsyntaxhighlighter.html#previousBlockState)()函數。解析模塊后,您可以使用保存最后狀態[setCurrentBlockState](qsyntaxhighlighter.html#setCurrentBlockState)( ) 。 該[currentBlockState](qsyntaxhighlighter.html#currentBlockState)()和[previousBlockState](qsyntaxhighlighter.html#previousBlockState)( )函數返回一個int值。如果沒有狀態設置,返回值為-1 。您可以指定任何其他值使用,以確定任何給定的狀態[setCurrentBlockState](qsyntaxhighlighter.html#setCurrentBlockState)()函數。一旦狀態被設定在[QTextBlock](qtextblock.html)保持該值直到它被設置重新設置或直到文本的相應段落被刪除。 例如,如果你正在寫一個簡單的C + +語法高亮,你可能會指定1來表示“在注釋” 。對于結束的評論最好設置1使用setCurrentBlockState的中間,和其他幾款最好設置0文本塊。在你的解析代碼,如果返回值[previousBlockState](qsyntaxhighlighter.html#previousBlockState)()是1 ,你,直到你達到收盤突出顯示文本作為一個C + +注釋`*``/`。 **See also** [previousBlockState](qsyntaxhighlighter.html#previousBlockState)( )[setFormat](qsyntaxhighlighter.html#setFormat)()和[setCurrentBlockState](qsyntaxhighlighter.html#setCurrentBlockState)( ) 。 ``` int QSyntaxHighlighter.previousBlockState (self) ``` 返回文本塊的結尾狀態前,以語法高亮顯示的當前塊。如果先前未設置任何值,則返回值為-1 。 **See also** [highlightBlock](qsyntaxhighlighter.html#highlightBlock)()和[setCurrentBlockState](qsyntaxhighlighter.html#setCurrentBlockState)( ) 。 ``` QSyntaxHighlighter.rehighlight (self) ``` 這種方法也是一個Qt槽與C + +的簽名`void rehighlight()`。 重新應用突出顯示整個文檔。 這個函數中引入了Qt 4.2中。 **See also** [rehighlightBlock](qsyntaxhighlighter.html#rehighlightBlock)( ) 。 ``` QSyntaxHighlighter.rehighlightBlock (self, QTextBlock?block) ``` 這種方法也是一個Qt槽與C + +的簽名`void rehighlightBlock(const QTextBlock&)`。 重新應用突出顯示給定的[QTextBlock](qtextblock.html) _block_。 此功能被引入Qt的4.6 。 **See also** [rehighlight](qsyntaxhighlighter.html#rehighlight)( ) 。 ``` QSyntaxHighlighter.setCurrentBlockState (self, int?newState) ``` 設置當前文本塊的狀態_newState_。 **See also** [currentBlockState](qsyntaxhighlighter.html#currentBlockState)()和[highlightBlock](qsyntaxhighlighter.html#highlightBlock)( ) 。 ``` QSyntaxHighlighter.setCurrentBlockUserData (self, QTextBlockUserData?data) ``` 重視給定的_data_以目前的文本塊。所有權被傳遞到下面的文本文件,即提供[QTextBlockUserData](qtextblockuserdata.html)如果相應的文本塊被刪除的對象將被刪除。 [QTextBlockUserData](qtextblockuserdata.html)可以用來存儲自定義設置。在語法高亮的情況下,特別是有趣的,因為緩存中存儲的信息,你可以找出在分析段落的文字。 例如在解析文本,你可以保持您遇到的( ' { [ ('之類的)括號字符軌道,并存儲它們的相對位置和實際[QChar](qchar.html)在源自一個簡單的類[QTextBlockUserData](qtextblockuserdata.html): ``` struct ParenthesisInfo { [QChar](qchar.html) char; int position; }; struct BlockData : public [QTextBlockUserData](qtextblockuserdata.html) { [QVector](index.htm)<ParenthesisInfo> parentheses; }; ``` 期間,在相關編輯器的光標導航,你可以問當前[QTextBlock](qtextblock.html)(使用檢索到的[QTextCursor.block](qtextcursor.html#block)( )函數),如果它有一個用戶數據對象集,并將其轉換為你的`BlockData`對象。然后,您可以檢查當前光標位置與先前錄制的括號位置相匹配,并根據括號(打開或關閉)的類型,找到同一級別的下一個左或右括號。 通過這種方式,你可以做一個直觀的括號匹配和高亮顯示從當前光標位置到匹配的括號。這使得它更容易發現缺少括號中的代碼,并尋找到對應的打開/關閉括號編輯括號密集型代碼的時候。 **See also** [currentBlockUserData](qsyntaxhighlighter.html#currentBlockUserData)()和[QTextBlock.setUserData](qtextblock.html#setUserData)( ) 。 ``` QSyntaxHighlighter.setDocument (self, QTextDocument?doc) ``` 安裝語法高亮在給定的[QTextDocument](qtextdocument.html) _doc_。一[QSyntaxHighlighter](qsyntaxhighlighter.html)只能用于同一個文檔的時間。 **See also** [document](qsyntaxhighlighter.html#document)( ) 。 ``` QSyntaxHighlighter.setFormat (self, int?start, int?count, QTextCharFormat?format) ``` 此功能適用于語法高亮顯示當前的文本塊(即傳遞給文本[highlightBlock](qsyntaxhighlighter.html#highlightBlock)()函數) 。 指定_format_從應用到文本_start_對的長度位置_count_字符(如果_count_是0 ,沒有采取任何措施) 。在設置的格式屬性_format_被合并在顯示時間直接存儲在文檔中的格式信息,例如先前設置[QTextCursor](qtextcursor.html)的功能。需要注意的是文件本身并沒有發生變化,通過這個功能設置的格式。 **See also** [format](qsyntaxhighlighter.html#format)()和[highlightBlock](qsyntaxhighlighter.html#highlightBlock)( ) 。 ``` QSyntaxHighlighter.setFormat (self, int?start, int?count, QColor?color) ``` 這是一個重載函數。 指定_color_從應用于當前文本塊_start_對的長度位置_count_字符。 當前文本塊的其他屬性,例如字體和背景顏色,被重置為默認值。 **See also** [format](qsyntaxhighlighter.html#format)()和[highlightBlock](qsyntaxhighlighter.html#highlightBlock)( ) 。 ``` QSyntaxHighlighter.setFormat (self, int?start, int?count, QFont?font) ``` 這是一個重載函數。 指定_font_從應用于當前文本塊_start_對的長度位置_count_字符。 當前文本塊的其他屬性,例如字體和背景顏色,被重置為默認值。 **See also** [format](qsyntaxhighlighter.html#format)()和[highlightBlock](qsyntaxhighlighter.html#highlightBlock)( ) 。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看