TabBar
A strip of document tabs with an unsaved dot, a close button, a new-tab button and drag to reorder.
Since 1.2.0
TabBar is the strip of document tabs of an editor, after Windows 11 Notepad. Each tab is softly rounded like a SidebarItem, the current one has an accent tint (one highlight that slides to the new tab), a tab with unsaved changes shows a dot, and a close button shows on the hovered tab and always on the current one. A "+" after the last tab asks for a new one. The strip scrolls sideways with the wheel when the tabs overflow and keeps the current tab in view. For page switching use AtlasViewSwitcher.
TabBar is an Item. The bar owns no data: the app changes currentIndex and the model in answer to the signals. Items put inside the bar sit at its far end.
Example
TabBar {
model: documents
currentIndex: documents.current
onActivated: index => documents.current = index
onCloseRequested: index => documents.close(index)
onNewRequested: documents.create()
onMoved: (from, to) => documents.move(from, to)
onContextMenuRequested: (index, position) => tabMenu.popup(tabBar, position)
}Properties
| Name | Type | Default | Description |
|---|---|---|---|
currentIndex |
int |
-1 |
The current tab; change it in answer to activated(). |
density |
int |
AtlasStyle.density |
AtlasStyle.Normal or AtlasStyle.Compact; Compact shrinks the height to about 75%. |
maxTabWidth |
real (read-only) |
— | The widest a tab grows before its title is elided. |
model |
var |
null |
A ListModel or QAbstractItemModel with the roles title, modified (the unsaved dot) and toolTip. |
trailing |
list<Item> (read-only) |
— | The default property: items at the bar's far end. |
Signals
| Name | Description |
|---|---|
activated(int index) |
Emitted when the user picks a tab. |
closeRequested(int index) |
Emitted when the close button or a middle click on a tab asks to close it. |
contextMenuRequested(int index, QPointF position) |
Emitted on a right click on a tab, or Menu or Shift+F10 on the focused tab. position is in the bar's coordinates, ready for ContextMenu.popup(tabBar, position): the pointer for a click, the tab's bottom-left for a key. |
moved(int from, int to) |
Emitted when a tab is dragged to a new place; the app moves it in the model. |
newRequested() |
Emitted when the "+" button is clicked. |
Methods
| Signature | Description |
|---|---|
ensureCurrentVisible(): var |
Scrolls the strip so the current tab is in view. Called when the count or width changes. |
Note
The name is the same as QtQuick.Controls' TabBar, so import Controls qualified (as QQC2) in a file that uses this one.
Keyboard
Tab reaches the current tab, and clicking never takes the keyboard focus from the editor. Menu or Shift+F10 on the focused tab emits contextMenuRequested. Tabs take no other keys: the app gives Ctrl+Tab and Ctrl+W.