Da hast du aber gleich mal ein riesen PureBasic-Problem beschrieben.
Also 1. Es funktioniert grundsätzlich unter GTK2 und GTK3.
Das bei dir nur eingeschränkt Scrollbalken unter GTK2 - Subsystem kommen kann an deiner Linux-Distribution und/oder deinem GTK-GUI_Theme liegen. Es wäre hierbei auch wichtig welche GTK2 Version genutzt wird.
Also bei mir funktioniert es mit GTK2 und auch mit GTK3.
Nun kommen wir zu Punkt 2.
Das QT-Subsytem unter Purebasic ist noch recht fehlerhaft.
Außerdem liegt es beim TreeGadget an dem kniffligen QT-Unterbau.
Hier ist eine mögliche Lösung:
Code: Alles auswählen
CompilerIf #PB_Compiler_OS = #PB_OS_Linux And Subsystem("qt")
Global Tree_0
#Qt_ScrollBarAsNeeded = 0
#Qt_ScrollBarAlwaysOff = 1
#Qt_ScrollBarAlwaysOn = 2
#Qt_ScrollPerItem = 0
#Qt_ScrollPerPixel = 1
Runtime Procedure QtSignalHandler()
QtScript("gadget("+Str(Tree_0)+").resizeColumnToContents(function() { 0 })")
EndProcedure
Procedure OpenWindow_0(x = 0, y = 0, width = 400, height = 400)
Window_0 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu)
Tree_0 = TreeGadget(#PB_Any, 10, 10, 380, 380)
QtScript("gadget("+Str(Tree_0)+").horizontalScrollBarPolicy = "+Str(#Qt_ScrollBarAsNeeded))
QtScript("gadget("+Str(Tree_0)+").horizontalScrollMode = "+Str(#Qt_ScrollPerPixel))
QtScript("gadget("+Str(Tree_0)+").verticalScrollBarPolicy = 0")
QtScript("gadget("+Str(Tree_0)+").columnCount = 1")
QtScript("gadget("+Str(Tree_0)+~").itemExpanded.connect(function() { runtime.call(\"QtSignalHandler()\") })")
QtScript("gadget("+Str(Tree_0)+~").itemCollapsed.connect(function() { runtime.call(\"QtSignalHandler()\") })")
QtScript("gadget("+Str(Tree_0)+").headerHidden = 1")
For i = 0 To 19
AddGadgetItem(Tree_0, i, "Eintrag "+Str(i+1),0, i)
Next
;Debug QtScript("dump(gadget("+Str(Tree_0)+"))")
EndProcedure
Procedure Window_0_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
OpenWindow_0()
Repeat
Until Not Window_0_Events(WindowEvent())
CompilerElse
Debug "Bitte nutzen Sie Linux und das QT-Subsystem zum probieren."
CompilerEndIf
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat