blob: 64e685152a21b9b484854c031243faca08f6b7b7 [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or (at your option) the GNU General
** Public license version 3 or any later version approved by the KDE Free
** Qt Foundation. The licenses are as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
** https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.2
/*!
\qmltype TableViewColumn
\inqmlmodule QtQuick.Controls
\since 5.1
\ingroup viewitems
\ingroup controls
\brief Used to define columns in a \l TableView or in a \l TreeView.
\image tableview.png
TableViewColumn represents a column within a TableView or a TreeView. It provides
properties to decide how the data in that column is presented.
\qml
TableView {
TableViewColumn { role: "title"; title: "Title"; width: 100 }
TableViewColumn { role: "author"; title: "Author"; width: 200 }
model: libraryModel
}
\endqml
\sa TableView, TreeView
*/
QtObject {
/*! \internal */
property Item __view: null
/*! \internal */
property int __index: -1
/*! The title text of the column. */
property string title
/*! The model \c role of the column. */
property string role
/*! The current width of the column.
The default value depends on platform. If only one
column is defined, the width expands to the viewport.
*/
property int width: (__view && __view.columnCount === 1) ? __view.viewport.width : 160
/*! The visible status of the column. */
property bool visible: true
/*! Determines if the column should be resizable.
\since QtQuick.Controls 1.1 */
property bool resizable: true
/*! Determines if the column should be movable.
The default value is \c true.
\note A non-movable column may get indirectly moved if adjacent columns are movable.
\since QtQuick.Controls 1.1 */
property bool movable: true
/*! \qmlproperty enumeration TableViewColumn::elideMode
The text elide mode of the column.
Allowed values are:
\list
\li Text.ElideNone
\li Text.ElideLeft
\li Text.ElideMiddle
\li Text.ElideRight - the default
\endlist
\sa {Text::elide}{elide} */
property int elideMode: Text.ElideRight
/*! \qmlproperty enumeration TableViewColumn::horizontalAlignment
The horizontal text alignment of the column.
Allowed values are:
\list
\li Text.AlignLeft - the default
\li Text.AlignRight
\li Text.AlignHCenter
\li Text.AlignJustify
\endlist
\sa {Text::horizontalAlignment}{horizontalAlignment} */
property int horizontalAlignment: Text.AlignLeft
/*! The delegate of the column. This can be used to set the itemDelagate
of a \l TableView or \l TreeView for a specific column.
In the delegate you have access to the following special properties:
\list
\li styleData.selected - if the item is currently selected
\li styleData.value - the value or text for this item
\li styleData.textColor - the default text color for an item
\li styleData.row - the index of the row
\li styleData.column - the index of the column
\li styleData.elideMode - the elide mode of the column
\li styleData.textAlignment - the horizontal text alignment of the column
\endlist
*/
property Component delegate
Accessible.role: Accessible.ColumnHeader
/*! \qmlmethod void TableViewColumn::resizeToContents()
Resizes the column so that the implicitWidth of the contents on every row will fit.
\since QtQuick.Controls 1.2 */
function resizeToContents() {
var minWidth = 0
var listdata = __view.__listView.children[0]
for (var i = 0; __index === -1 && i < __view.__columns.length; ++i) {
if (__view.__columns[i] === this)
__index = i
}
// ### HACK We don't have direct access to the instantiated item,
// so we go spelunking. Each 'item' variable check is annotated
// with the expected object it should point to in BasicTableView.
for (var row = 0 ; row < listdata.children.length ; ++row) {
var item = listdata.children[row] ? listdata.children[row].rowItem : undefined
if (item) { // FocusScope { id: rowitem }
item = item.children[1]
if (item) { // Row { id: itemrow }
item = item.children[__index]
if (item) { // Repeater.delegate a.k.a. __view.__itemDelegateLoader
var indent = __view.__isTreeView && __index === 0 ? item.__itemIndentation : 0
item = item.item
if (item && item.hasOwnProperty("implicitWidth")) {
minWidth = Math.max(minWidth, item.implicitWidth + indent)
}
}
}
}
}
if (minWidth)
width = minWidth
}
}