Details
-
User Story
-
Resolution: Done
-
P2: Important
-
None
-
None
-
Shovelling Snow, Q1/2020 Finale, Q2/2020 kick off, 6.2 Features
Description
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)
- or perhaps borderStyle (border is more QML): (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
Attachments
Issue Links
- depends on
-
QTBUG-86399 Windows: add remaining native style patches for Windows
- Closed
-
QTBUG-87108 Add macOS and Windows to all applicable auto tests
- Open
-
QTBUG-85984 QtQuickControls: rename "default" style
- Closed
-
QTBUG-86403 When no style is specified, default to a native platform style if available, otherwise use Basic
- Closed
-
QTBUG-88028 Quick Controls ScrollBar should have support for arrow buttons
- Reported
- is duplicated by
-
QTBUG-67002 Add Desktop style to QQC2
- Closed
- is required for
-
QTBUG-73063 Qt Quick Changes in Qt 6
- Open
- relates to
-
QTBUG-83612 earmarked by richard
- Closed