- Extending Qt Creator Manual
- gui.lua
- Extending Qt Creator Manual 16.0.1

# gui.lua

     ---@meta Gui

     local gui = {}

     ---The base class of all ui related classes.
     ---@class Object
     gui.Object = {}

     ---The base class of all gui layout classes.
     ---@class Layout : Object
     gui.layout = {}

     ---The base class of all widget classes, an empty widget itself.
     ---@class Widget : Object
     ---@field visible boolean Whether the widget is visible or not.
     ---@field enabled boolean Whether the widget is enabled or not.
     gui.widget = {}

     ---@alias LayoutChild string|BaseAspect|Layout|Widget|function
     ---@alias LayoutChildren LayoutChild[]

     ---@class WidgetAttributeMapT<T>: { [WidgetAttribute]: T }

     ---@class (exact) BaseWidgetOptions
     ---@field size? integer[] Two integers, representing the width and height of the widget.
     ---@field windowFlags? WindowType[] The window flags of the widget.
     ---@field widgetAttributes? WidgetAttributeMapT<boolean> The widget attributes of the widget.
     ---@field autoFillBackground? boolean A boolean, representing whether the widget should automatically fill its background.
     ---@field sizePolicy? SizePolicy.Policy[] Two size policies of the widget, horizontal and vertical.
     gui.baseWidgetOptions = {}

     ---@class (exact) WidgetOptions : BaseWidgetOptions
     ---@field title? string The title of the widget, if applicable.
     ---@field onTextChanged? function The function to be called when the text of the widget changes, if applicable.
     ---@field onClicked? function The function to be called when the widget is clicked, if applicable.
     ---@field iconPath? FilePath The path to the icon of the widget, if applicable. Empty or not existent paths set null icon. (see [QIcon](https://doc.qt.io/qt-5/qicon.html#QIcon))
     ---@field text? string The text of the widget, if applicable.
     ---@field value? integer The value of the widget, if applicable.
     ---@field flat? boolean A boolean, representing whether the widget should be flat, if applicable.
     ---@field [1]? Layout The layout of the widget, if applicable.
     ---@field fixedSize? integer[] Two integers representing the width and height
     ---@field contentMargins? integer[] Four integers represending left, top, right and bottom margins.
     ---@field cursor? CursorShape The cursor shape for the widget.
     ---@field minimumWidth? integer The minimum width in pixels.
     ---@field minimumHeight? integer Minimum height of input
     gui.widgetOptions = {}

     ---@param options WidgetOptions
     ---@return Widget
     function gui.Widget(options) end

     ---Show the widget. (see [QWidget::show](https://doc.qt.io/qt-5/qwidget.html#show))
     function gui.widget:show() end

     ---Sets the top-level widget containing this widget to be the active window. (see [QWidget::activateWindow](https://doc.qt.io/qt-5/qwidget.html#activateWindow))
     function gui.widget:activateWindow() end

     ---Closes the widget. (see [QWidget::close](https://doc.qt.io/qt-5/qwidget.html#close))
     function gui.widget:close() end

     ---Column layout
     ---@class Column : Layout
     local column = {}

     ---@param children LayoutChildren
     ---@return Column
     function gui.Column(children) end

     ---A group box with a title.
     ---@class Group : Widget
     local group = {}

     ---@param options WidgetOptions
     ---@return Group
     function gui.Group(options) end

     ---Row layout.
     ---@class Row : Layout
     local row = {}

     ---@param children LayoutChildren
     ---@return Row
     function gui.Row(children) end

     ---Flow layout.
     ---@class Flow : Layout
     local flow = {}

     ---@param children LayoutChildren
     ---@return Flow
     function gui.Flow(children) end

     ---Grid layout.
     ---@class Grid : Layout
     local grid = {}

     ---@param children LayoutChildren
     ---@return Grid
     function gui.Grid(children) end

     ---Form layout.
     ---@class Form : Layout
     local form = {}

     ---@param children LayoutChildren
     ---@return Form
     function gui.Form(children) end

     ---A stack of multiple widgets.
     ---@class Stack : Widget
     local stack = {}

     ---A ScrollArea widget.
     ---@class ScrollArea : Widget

     ---@param options WidgetOptions
     ---@return ScrollArea
     function gui.ScrollArea(options) end

     ---@param options WidgetOptions
     ---@return Stack
     function gui.Stack(options) end

     ---A Tab widget.
     ---@class Tab : Widget
     local tab = {}

     ---@param name string
     ---@param layout Layout
     ---@return Tab
     function gui.Tab(name, layout) end

     ---@class (exact) TabOptions
     ---@field [1] string The name of the tab.
     ---@field [2] Layout The layout of the tab.
     gui.tabOptions = {}

     ---@param options TabOptions
     ---@return Tab tab The new tab.
     function gui.Tab(options) end

     ---A Multiline text edit.
     ---@class TextEdit : Widget
     local textEdit = {}

     ---@return string markdown Returns the content of the TextEdit as markdown
     function textEdit:markdown() end

     ---@param options WidgetOptions
     ---@return TextEdit
     function gui.TextEdit(options) end

     ---A Single line text edit
     ---@class LineEdit : Widget
     ---@field rightSideIconPath? FilePath A path to icon
     ---@field placeHolderText? string A placeholder text for intput
     ---@field completer? QCompleter A QCompleter object.
     ---@field onReturnPressed? function The function to be called when Enter is pressed
     ---@field onRightSideIconClicked? function The function to be called when right side icon is clicked
     ---@field text string Current text

     local lineEdit = {}

     ---@class PushButton : Widget
     local pushButton = {}

     ---@param options WidgetOptions
     ---@return PushButton
     function gui.PushButton(options) end

     ---@class Label : Widget
     ---@field text string Returns the content of the Label as string
     local label = {}

     ---@class (exact) LabelOptions : BaseWidgetOptions
     ---@param interactionFlags? TextInteractionFlag[]
     ---@param textFormat? TextFormat The text format enum
     ---@param wordWrap? boolean

     gui.labelOptions = {}

     ---@param options LabelOptions
     ---@return Label
     function gui.Label(options) end

     ---@class SpinBox : Widget
     local spinBox = {}

     ---@param options WidgetOptions
     ---@return SpinBox
     function gui.SpinBox(options) end

     ---@class Splitter : Widget
     local splitter = {}

     ---@alias Orientation "horizontal"|"vertical"

     ---@class (exact) SplitterOptions : BaseWidgetOptions
     ---@field orientation? Orientation The orientation of the splitter. (default: "vertical")
     ---@field childrenCollapsible? boolean A boolean, representing whether the children are collapsible. (default: true)
     ---@field stretchFactors? integer[] A list of integers, representing the stretch factors of the children. (default: {1, ...})
     ---@field size? integer[] Two integers, representing the width and height of the widget.
     ---@field [integer] Layout | Widget The splits.
     gui.splitterOptions = {}

     ---@param options SplitterOptions
     ---@return Splitter
     function gui.Splitter(options) end

     ---@class ToolBar : Widget
     local toolBar = {}

     ---@param options WidgetOptions
     ---@return ToolBar
     function gui.ToolBar(options) end

     ---@class TabWidget : Widget
     local tabWidget = {}

     ---@param options Tab[]
     ---@return TabWidget
     function gui.TabWidget(options) end

     ---@param name string
     ---@param child WidgetOptions
     ---@return TabWidget
     function gui.TabWidget(name, child) end

     ---@class MarkdownBrowser : Widget
     ---@field markdown string The markdown content of the MarkdownBrowser. Can be set or retrieved.
     local markdownBrowser = {}

     ---@class (exact) MarkdownBrowserOptions : WidgetOptions
     ---@field enableCodeCopyButton? boolean Enable or disable the code copy button
     ---@field viewportMargins? integer[] Four integers representing left, top, right and bottom margins
     local markdownBrowserOptions = {}

     ---@param options MarkdownBrowserOptions
     ---@return MarkdownBrowser
     function gui.MarkdownBrowser(options) end

     ---@class Spinner : Widget
     ---@field running boolean Set spinner visible and display spinning animation
     ---@field decorated boolean Display spinner with custom styleSheet defined inside control (default true)
     local spinner = {}

     ---@class IconDisplay : Widget
     local IconDisplay = {}

     ---@class (exact) IconDisplayOptions : BaseWidgetOptions
     ---@param icon? Utils.Icon|FilePath|string The icon to display
     gui.iconDisplayOptions = {}

     ---@param options IconDisplayOptions
     ---@return IconDisplay
     function gui.IconDisplay(options) end

     ---A "Line break" in the gui.
     function gui.br() end

     ---A "Stretch" in the layout.
     function gui.st() end

     ---An empty grid cell in a grid layout.
     function gui.empty() end

     ---A horizontal line in the layout.
     function gui.hr() end

     ---Clears the margin of the layout.
     function gui.noMargin() end

     ---Sets the margin of the layout to the default value.
     function gui.normalMargin() end

     ---Sets the alignment of a Grid layout according to the Form layout rules.
     function gui.withFormAlignment() end

     ---Sets the stretch factor at position index to stretch.
     ---@param index integer The widget index.
     ---@param stretch integer The stretch factor.
     function gui.stretch(index, stretch) end

     --- Enum representing Text interaction flags
     ---@enum TextInteractionFlag
     gui.TextInteractionFlag {
         NoTextInteraction = 0,
         TextSelectableByMouse = 0,
         TextSelectableByKeyboard = 0,
         LinksAccessibleByMouse = 0,
         LinksAccessibleByKeyboard = 0,
         TextEditable = 0,

         TextEditorInteraction = TextSelectableByMouse | TextSelectableByKeyboard | TextEditable,
         TextBrowserInteraction = TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard
     }

     --- Enum representing text format types
     ---@enum TextFormat
     gui.TextFormat = {
         PlainText = 0,
         RichText = 0,
         AutoText = 0,
         MarkdownText = 0
     }

     --- Enum representing various window types.
     ---@enum WindowType
     gui.WindowType = {
         Widget = 0,
         Window = 0,
         Dialog = 0,
         Sheet = 0,
         Drawer = 0,
         Popup = 0,
         Tool = 0,
         ToolTip = 0,
         SplashScreen = 0,
         Desktop = 0,
         SubWindow = 0,
         ForeignWindow = 0,
         CoverWindow = 0,
         WindowType_Mask = 0,
         MSWindowsFixedSizeDialogHint = 0,
         MSWindowsOwnDC = 0,
         BypassWindowManagerHint = 0,
         X11BypassWindowManagerHint = 0,
         FramelessWindowHint = 0,
         WindowTitleHint = 0,
         WindowSystemMenuHint = 0,
         WindowMinimizeButtonHint = 0,
         WindowMaximizeButtonHint = 0,
         WindowMinMaxButtonsHint = 0,
         WindowContextHelpButtonHint = 0,
         WindowShadeButtonHint = 0,
         WindowStaysOnTopHint = 0,
         WindowTransparentForInput = 0,
         WindowOverridesSystemGestures = 0,
         WindowDoesNotAcceptFocus = 0,
         MaximizeUsingFullscreenGeometryHint = 0,
         CustomizeWindowHint = 0,
         WindowStaysOnBottomHint = 0,
         WindowCloseButtonHint = 0,
         MacWindowToolBarButtonHint = 0,
         BypassGraphicsProxyWidget = 0,
         NoDropShadowWindowHint = 0,
         WindowFullscreenButtonHint = 0,
     }

     ---@enum (key) WidgetAttribute
     gui.WidgetAttribute = {
         WA_Disabled = 0,
         WA_UnderMouse = 0,
         WA_MouseTracking = 0,
         WA_OpaquePaintEvent = 0,
         WA_StaticContents = 0,
         WA_LaidOut = 0,
         WA_PaintOnScreen = 0,
         WA_NoSystemBackground = 0,
         WA_UpdatesDisabled = 0,
         WA_Mapped = 0,
         WA_InputMethodEnabled = 0,
         WA_WState_Visible = 0,
         WA_WState_Hidden = 0,
         WA_ForceDisabled = 0,
         WA_KeyCompression = 0,
         WA_PendingMoveEvent = 0,
         WA_PendingResizeEvent = 0,
         WA_SetPalette = 0,
         WA_SetFont = 0,
         WA_SetCursor = 0,
         WA_NoChildEventsFromChildren = 0,
         WA_WindowModified = 0,
         WA_Resized = 0,
         WA_Moved = 0,
         WA_PendingUpdate = 0,
         WA_InvalidSize = 0,
         WA_CustomWhatsThis = 0,
         WA_LayoutOnEntireRect = 0,
         WA_OutsideWSRange = 0,
         WA_GrabbedShortcut = 0,
         WA_TransparentForMouseEvents = 0,
         WA_PaintUnclipped = 0,
         WA_SetWindowIcon = 0,
         WA_NoMouseReplay = 0,
         WA_DeleteOnClose = 0,
         WA_RightToLeft = 0,
         WA_SetLayoutDirection = 0,
         WA_NoChildEventsForParent = 0,
         WA_ForceUpdatesDisabled = 0,
         WA_WState_Created = 0,
         WA_WState_CompressKeys = 0,
         WA_WState_InPaintEvent = 0,
         WA_WState_Reparented = 0,
         WA_WState_ConfigPending = 0,
         WA_WState_Polished = 0,
         WA_WState_OwnSizePolicy = 0,
         WA_WState_ExplicitShowHide = 0,
         WA_ShowModal = 0,
         WA_MouseNoMask = 0,
         WA_NoMousePropagation = 0,
         WA_Hover = 0,
         WA_InputMethodTransparent = 0,
         WA_QuitOnClose = 0,
         WA_KeyboardFocusChange = 0,
         WA_AcceptDrops = 0,
         WA_DropSiteRegistered = 0,
         WA_WindowPropagation = 0,
         WA_NoX11EventCompression = 0,
         WA_TintedBackground = 0,
         WA_X11OpenGLOverlay = 0,
         WA_AlwaysShowToolTips = 0,
         WA_MacOpaqueSizeGrip = 0,
         WA_SetStyle = 0,
         WA_SetLocale = 0,
         WA_MacShowFocusRect = 0,
         WA_MacNormalSize = 0,
         WA_MacSmallSize = 0,
         WA_MacMiniSize = 0,
         WA_LayoutUsesWidgetRect = 0,
         WA_StyledBackground = 0,
         WA_CanHostQMdiSubWindowTitleBar = 0,
         WA_MacAlwaysShowToolWindow = 0,
         WA_StyleSheet = 0,
         WA_ShowWithoutActivating = 0,
         WA_X11BypassTransientForHint = 0,
         WA_NativeWindow = 0,
         WA_DontCreateNativeAncestors = 0,
         WA_DontShowOnScreen = 0,
         WA_X11NetWmWindowTypeDesktop = 0,
         WA_X11NetWmWindowTypeDock = 0,
         WA_X11NetWmWindowTypeToolBar = 0,
         WA_X11NetWmWindowTypeMenu = 0,
         WA_X11NetWmWindowTypeUtility = 0,
         WA_X11NetWmWindowTypeSplash = 0,
         WA_X11NetWmWindowTypeDialog = 0,
         WA_X11NetWmWindowTypeDropDownMenu = 0,
         WA_X11NetWmWindowTypePopupMenu = 0,
         WA_X11NetWmWindowTypeToolTip = 0,
         WA_X11NetWmWindowTypeNotification = 0,
         WA_X11NetWmWindowTypeCombo = 0,
         WA_X11NetWmWindowTypeDND = 0,
         WA_SetWindowModality = 0,
         WA_WState_WindowOpacitySet = 0,
         WA_TranslucentBackground = 0,
         WA_AcceptTouchEvents = 0,
         WA_WState_AcceptedTouchBeginEvent = 0,
         WA_TouchPadAcceptSingleTouchEvents = 0,
         WA_X11DoNotAcceptFocus = 0,
         WA_AlwaysStackOnTop = 0,
         WA_TabletTracking = 0,
         WA_ContentsMarginsRespectsSafeArea = 0,
         WA_StyleSheetTarget = 0
     }

     --- Enum representing cursor shape for the widget
     ---@enum CursorShape
     gui.CursorShape = {
         ArrowCursor = 0 = 0,
         UpArrowCursor = 0,
         CrossCursor = 0,
         WaitCursor = 0,
         IBeamCursor = 0,
         SizeVerCursor = 0,
         SizeHorCursor = 0,
         SizeBDiagCursor = 0,
         SizeFDiagCursor = 0,
         SizeAllCursor = 0,
         BlankCursor = 0,
         SplitVCursor = 0,
         SplitHCursor = 0,
         PointingHandCursor = 0,
         ForbiddenCursor = 0,
         WhatsThisCursor = 0,
         BusyCursor = 0,
         OpenHandCursor = 0,
         ClosedHandCursor = 0,
         DragCopyCursor = 0,
         DragMoveCursor = 0,
         DragLinkCursor = 0,
         LastCursor = DragLinkCursor,
         BitmapCursor = 0,
         CustomCursor = 0
     }

     gui.SizePolicy = {
         --- Enum representing size policy.
         ---@enum Policy
         Policy = {
             Fixed = 0,
             Minimum = 0,
             Maximum = 0,
             Preferred = 0,
             MinimumExpanding = 0,
             Expanding = 0,
             Ignored = 0
         }
     }

     ---@class Space : Layout
     gui.space = {}

     ---Adds a non-strecthable space with size size to the layout.
     ---@param size integer size in pixels of the space.
     ---@return Space
     function gui.Space(size) end

     ---@class Span : Layout
     gui.span = {}

     ---@class SpanOptions
     ---@field [1] integer The number of columns to span.
     ---@field [2] Layout The inner layout to span.

     ---@class SpanOptionsWithRow
     ---@field [1] integer The number of columns to span.
     ---@field [2] integer The number of rows to span.
     ---@field [3] Layout The inner layout.

     ---@param options SpanOptions|SpanOptionsWithRow
     ---@return Span
     function gui.Span(options) end

     ---@param col integer The number of columns to span.
     ---@param layout Layout The inner layout.
     ---@return Span
     function gui.Span(col, layout) end

     ---@param col integer The number of columns to span.
     ---@param row integer The number of rows to span.
     ---@param layout Layout The inner layout.
     ---@return Span
     function gui.Span(col, row, layout) end

     ---@class Stretch : Layout
     gui.stretch = {}

     ---Adds a stretchable space to the layout.
     ---@param factor integer The factor by which the space should stretch.
     function gui.Stretch(factor) end
     return gui