[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