[Gambas-user] Tab size in a textarea
    T Lee Davidson 
    t.lee.davidson at gmail.com
       
    Sat Nov  5 18:05:33 CET 2022
    
    
  
On 11/5/22 02:43, BB wrote:
> Is there any way to set the tab size in a TextArea control?
> 
> I mean the width on the left when I hit the Tab key when editing the TextArea text.
> 
> Mainly interested in QT5 but regardless of the gui it is "Huge", about 10 characters.
> 
> tia
> 
> bruce
It appears that having the ability to set the tab size would require modification of the TextArea code[1].
Since tabStopDistance is specified in pixels, the font metrics would need to be taken into account. An example from 
StackExchange[2] for Python:
textedit = QtWidgets.QPlainTextEdit()
textedit.setTabStopDistance( QtGui.QFontMetricsF(textedit.font() ).horizontalAdvance(' ') * 4)
I don't know how that would translate to a Gambas TextArea.
In the meantime, you could manipulate TextArea.Text yourself:
' Gambas class file
Private iTabSize As Integer = 4
Private bTabKey As Boolean
Public Sub TextArea1_Change()
   If bTabKey Then
     bTabKey = False
     Object.Lock(TextArea1)
     ' TextArea1.Undo ' Does not work; Undo is greedy taking more than just the last keystroke.
     ' TextArea1.Insert("\b") ' Neither the backspace control character nor Chr(8) behave as expected.
     TextArea1.Text = String.Left(TextArea1.Text, -1)
     TextArea1.Insert(Space(iTabSize))
     Object.Unlock(TextArea1)
   Endif
End
Public Sub TextArea1_KeyPress()
   If Key.Code = Key.Tab Then ' Do not edit TextArea.Text in this event.
     bTabKey = True ' Use a semaphore because Key information is not available in the Change event.
   Endif
End
-- 
Lee
[1] https://doc.qt.io/qt-5/qplaintextedit.html#tabStopDistance-prop
[2] https://stackoverflow.com/questions/50190860/how-to-change-the-width-of-tabs-in-a-qplaintextedit
    
    
More information about the User
mailing list