[QScintilla] Scrolling content of QScintilla viewport
    fulcrumusa at aim.com 
    fulcrumusa at aim.com
       
    Sat Jul 18 00:54:14 BST 2015
    
    
  
> You could try the low level SCI_LINESCROLL...
>
>
http://www.scintilla.org/ScintillaDoc.html#SCI_LINESCROLL
Hi Phil,
Thank you
for the suggestion. I did try that (after digging through the
QScintilla code because SF.net is down :)).
While I can scroll the text, I am getting somewhat
inconsistent behavior from QScintilla editor even without scrolling.
I have the following code now:
        self.file = QFile(filename)
        if not self.file.open(QIODevice.ReadOnly):
            print "Error opening file", filename
        self.editor.read(self.file)
        size = self.editor.viewport().frameSize()
        font = self.lexer.defaultFont(0)
    
        fontmetrics = QFontMetrics(font)
        print "viewport size %u, line spacing: %u" % \
              (size.height(), fontmetrics.lineSpacing())
       
        num_lines = size.height() / fontmetrics.lineSpacing()
        print "number of lines on screen %d" % num_lines
        scroll_by_lines = (num_lines / 2)
      
        self.editor.setFocus()
       
        self.editor.SendScintilla(Qsci.QsciScintilla.SCI_GOTOLINE, line)
       
        #self.editor.setSelection(line - 1, 0, line, 0)
        #self.editor.setSelectionBackgroundColor(QColor("#cccccc"))
        self.editor.recolor()
        print "scrolling by %d lines" % scroll_by_lines
        #self.editor.SendScintilla(Qsci.QsciScintilla.SCI_LINESCROLL, 0,
        #                                   scroll_by_lines)
As you can see, I use the raw SCI_GOTOLINE command to put the
editor at the desired line. However, the line is not always visible as the
documentation says it should be. If the viewport is small, the line is just
below the visible area.
If it is large, the target line is always 6 lines from the bottom of the viewable
area.
Furthermore, regardless of how big I resize the editor widget to,
self.editor.viewport().frameSize() always returns the same size.
How does QScintilla determine the size of the viawable are?
- Mitko
    
    
More information about the QScintilla
mailing list