David Boddie a écrit :

Over multiple lines:

  print "void MyTextEdit::paintEvent(QPaintEvent* event) from position:",
  print startPosition.block().position(), "to",
  print endPosition.block().position() + endPosition.block().length()

Hope this helps,

Thanks David,

that works fine.
Now, I'm trying to achieve something that I found in a C++ forum (http://forum.qtfr.org/viewtopic.php?id=4447): To set my current QTextEdit's highlighter to highlight only the QTextEdit's viewport because it is very slow with large docs.

I've tried to translate it, but it seems to enter an infinite loop.
Maybe I missed something in translating this to Python, and the original C++ for loop is a particular one.

>-----------------------------------
import sys
from PyQt4 import QtGui, QtCore
import generic_highlighter
class MainWindow(QtGui.QMainWindow):
   def __init__(self, *args):
       QtGui.QMainWindow.__init__(self, *args)
       self.te=QtGui.QTextEdit()
       self.setCentralWidget(self.te)
       self.highlighter = generic_highlighter.genericHighlighter(self.te)
       self.highlighter.Cpp()
self.connect( self.te.verticalScrollBar(), QtCore.SIGNAL( "sliderMoved(int)" ), self.quickRehighlight() ) def quickRehighlight(self):
       # save the current cursor position in the document
       cursor_saved = self.te.textCursor()
       # get the cursor position near the top
       # left corner of the current viewport.
       cur = self.te.cursorForPosition(QtCore.QPoint(0,0))
       currentBlockIsVisible = True
while currentBlockIsVisible :
           blockHighlighted = False
           # find if the current block should be highlighted or not
           longrules = len(self.highlighter.rules)
while not blockHighlighted :
               for i in range(longrules) :
                   aHighlightingRule = self.highlighter.rules[i]
                   #pattern = aHighlightingRule.pattern
                   regexp = aHighlightingRule.pattern
                   if cur.block().text().indexOf(regexp) >= 0 :
# reformating will force the textEdit to send the signal textChanged cur.setBlockCharFormat(aHighlightingRule.getFormat())
                       blockHighlighted = True

           if not blockHighlighted :
               # if the current block does not match any highlightring
               # rules, format it with the default settings.
               cur.setBlockCharFormat(QtGui.QTextCharFormat())

           # go to the next block
           cur.movePosition(QtGui.QTextCursor.NextBlock)
# get the cursor position near the bottom left corner of the current viewport. endCursor = self.te.cursorForPosition(QtCore.QPoint(0,self.te.viewport().height()))

           if cur.block().position() > endCursor.block().position() :
               currentBlockIsVisible = False
app=QtGui.QApplication(sys.argv)
mw=MainWindow()
mw.show()
app.exec_()
>-----------------------------------

Any idea ?

Thanks.
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to