Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-68814

Native style support for Qt Quick Controls 2



    • Shovelling Snow, Q1/2020 Finale, Q2/2020 kick off, 6.2 Features


      This work document describes the ongoing work to port QStyle to QtQuick Controls 2, with the overall goal of improving support for writing desktop applications with a native Look-And-Feel.

      Controls available, but missing native style (supported by QStyle)

      • TabBar
      • ToolButton (Button with menu)
      • ToolSeparator

      Controls available, but missing native style (unsupported by QStyle)

      • Switch
      • RangeSlider
      • BusyIndicator
      • DelayButton
      • PageIndicator
      • Tumbler

      Controls missing (compared to Qt Widgets)

      • TabView
        • cannot be composed as TabBar + StackView, it's has more combined visuals on e.g macOS
      • ScrollableTextArea (same concept as on macOS)
        • or improve support putting TextArea inside ScrollView
      • QToolBar
        • ToolBar (and side bar) should have a combined visual look on macOS
      • QFontComboBox
      • QTimeEdit
      • QDateEdit
      • QKeySequenceEdit
      • QMdiArea
      • QMdiSubWindow
      • QDockWidget
      • QToolBox
      • QCommandLinkButton
      • Line (in Qt Designer, which is a Frame. Integrate into ToolSeparator?)

      Controls missing (compared to XCode IB)

      • Segmented button (mac) in controls1 as ButtonGroup/ButtonRow?
      • SearchField 

       Controls available, but with missing API (compared to Qt Widgets)

      • Small and Mini API for most controls
      • TextArea
        • BorderStyle. Important to be able to place it inside e.g a Frame or a ScrollView that already has a frame.
        • Putting it inside a ScrollView should just work
          • suffers from the same problems as with flickable above.
        • frameStyle (Shape, Shadow)
        • frameShape (Box, Panel, WinPanel, etc)
          • or perhaps borderStyle (border is more QML): (none, Line, bezel, rounded)
            sborder style/frameShape (none, Line, bezel, rounded)
      • ScrollBar
        • Add API to specify if a scrollbar should be transient or not (fade away when not used). Currently a scrollbar is transient if the the policy is ScrollBar.AsNeeded. But this is different for a desktop style where the scrollbar should typically stay or hide depending on the content/viewport ratio, and not if it's being actively used. This should also control if the scrollbars are used as overlays in ScrollArea, or placed on the side of the contents.
        • On mac, work is needed to animate transient scrollbars.
        • On mac, the background should sometimes have a frame, other times not. But it looks like the stand-alone version should not have any frames. But when used in a NSScrollView, it should. So investigate more how to decide when to use a frame, and how to draw it.
        • If a flickable has both vertical and horizontal scrollbars, they overlap in the bottom-right corner. This looks wrong when the scrollbars have a background. A fix could be to resize the scrollbars differently when the background delegate is set/visible.
      • GroupBox
        • Checkable groupboxes (a checkbox can be placed in the groupbox title)
      • ToolButton
        • Missing a menu API. The button should be styled with an arrow if it opens a menu, so hacking this together from the app will probably not be enough?
      • Slider
        • Missing tick-marks API
      • Dial
        • Missing tick-marks API

      Other things that needs to be done

      • Make "default" style be the platform style. And rename "default style" to e.g "plain style" 
      • Adjust all layout rects, and verify that controls look as expected with layouts
      • Add cmake support
      • Add native menus/popups (for combobox, tooltip, etc)
        • Read QPlatformTheme



        Issue Links

          For Gerrit Dashboard: QTBUG-68814
          # Subject Branch Project Status CR V



              richard Richard Moe Gustavsen
              dedietri Gabriel de Dietrich (drgvond)
              2 Vote for this issue
              18 Start watching this issue



                Gerrit Reviews

                  There are no open Gerrit changes