~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/gui/itemviews/qtablewidget.h

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
**
 
3
** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
 
4
**
 
5
** This file is part of the item views module of the Qt Toolkit.
 
6
**
 
7
** This file may be distributed under the terms of the Q Public License
 
8
** as defined by Trolltech AS of Norway and appearing in the file
 
9
** LICENSE.QPL included in the packaging of this file.
 
10
**
 
11
** This file may be distributed and/or modified under the terms of the
 
12
** GNU General Public License version 2 as published by the Free Software
 
13
** Foundation and appearing in the file LICENSE.GPL included in the
 
14
** packaging of this file.
 
15
**
 
16
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
 
17
**   information about Qt Commercial License Agreements.
 
18
** See http://www.trolltech.com/qpl/ for QPL licensing information.
 
19
** See http://www.trolltech.com/gpl/ for GPL licensing information.
 
20
**
 
21
** Contact info@trolltech.com if any conditions of this licensing are
 
22
** not clear to you.
 
23
**
 
24
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 
25
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
26
**
 
27
****************************************************************************/
 
28
 
 
29
#ifndef QTABLEWIDGET_H
 
30
#define QTABLEWIDGET_H
 
31
 
 
32
#include <QtGui/qtableview.h>
 
33
#include <QtCore/qvariant.h>
 
34
#include <QtCore/qvector.h>
 
35
 
 
36
class Q_GUI_EXPORT QTableWidgetSelectionRange
 
37
{
 
38
public:
 
39
    QTableWidgetSelectionRange();
 
40
    QTableWidgetSelectionRange(int top, int left, int bottom, int right);
 
41
    QTableWidgetSelectionRange(const QTableWidgetSelectionRange &other);
 
42
    ~QTableWidgetSelectionRange();
 
43
    inline int topRow() const { return top; }
 
44
    inline int bottomRow() const { return bottom; }
 
45
    inline int leftColumn() const { return left; }
 
46
    inline int rightColumn() const { return right; }
 
47
private:
 
48
    int top, left, bottom, right;
 
49
};
 
50
 
 
51
class QTableWidget;
 
52
class QTableModel;
 
53
class QWidgetItemData;
 
54
 
 
55
class Q_GUI_EXPORT QTableWidgetItem
 
56
{
 
57
    friend class QTableWidget;
 
58
    friend class QTableModel;
 
59
public:
 
60
    enum { Type = 0, UserType = 1000 };
 
61
    QTableWidgetItem(int type = Type);
 
62
    explicit QTableWidgetItem(const QString &text, int type = Type);
 
63
    virtual ~QTableWidgetItem();
 
64
 
 
65
    virtual QTableWidgetItem *clone() const;
 
66
 
 
67
    inline QTableWidget *tableWidget() const { return view; }
 
68
 
 
69
    inline Qt::ItemFlags flags() const { return itemFlags; }
 
70
    inline void setFlags(Qt::ItemFlags flags);
 
71
 
 
72
    inline QString text() const
 
73
        { return data(Qt::DisplayRole).toString(); }
 
74
    inline void setText(const QString &text);
 
75
 
 
76
    inline QIcon icon() const
 
77
        { return qvariant_cast<QIcon>(data(Qt::DecorationRole)); }
 
78
    inline void setIcon(const QIcon &icon);
 
79
 
 
80
    inline QString statusTip() const
 
81
        { return data(Qt::StatusTipRole).toString(); }
 
82
    inline void setStatusTip(const QString &statusTip);
 
83
 
 
84
    inline QString toolTip() const
 
85
        { return data(Qt::ToolTipRole).toString(); }
 
86
    inline void setToolTip(const QString &toolTip);
 
87
 
 
88
    inline QString whatsThis() const
 
89
        { return data(Qt::WhatsThisRole).toString(); }
 
90
    inline void setWhatsThis(const QString &whatsThis);
 
91
 
 
92
    inline QFont font() const
 
93
        { return qvariant_cast<QFont>(data(Qt::FontRole)); }
 
94
    inline void setFont(const QFont &font);
 
95
 
 
96
    inline int textAlignment() const
 
97
        { return data(Qt::TextAlignmentRole).toInt(); }
 
98
    inline void setTextAlignment(int alignment)
 
99
        { setData(Qt::TextAlignmentRole, alignment); }
 
100
 
 
101
    inline QColor backgroundColor() const
 
102
        { return qvariant_cast<QColor>(data(Qt::BackgroundColorRole)); }
 
103
    inline void setBackgroundColor(const QColor &color)
 
104
        { setData(Qt::BackgroundColorRole, color); }
 
105
 
 
106
    inline QColor textColor() const
 
107
        { return qvariant_cast<QColor>(data(Qt::TextColorRole)); }
 
108
    inline void setTextColor(const QColor &color)
 
109
        { setData(Qt::TextColorRole, color); }
 
110
 
 
111
    inline Qt::CheckState checkState() const
 
112
        { return static_cast<Qt::CheckState>(data(Qt::CheckStateRole).toInt()); }
 
113
    inline void setCheckState(Qt::CheckState state)
 
114
        { setData(Qt::CheckStateRole, state); }
 
115
 
 
116
    virtual QVariant data(int role) const;
 
117
    virtual void setData(int role, const QVariant &value);
 
118
 
 
119
    virtual bool operator<(const QTableWidgetItem &other) const;
 
120
 
 
121
#ifndef QT_NO_DATASTREAM
 
122
    virtual void read(QDataStream &in);
 
123
    virtual void write(QDataStream &out) const;
 
124
#endif
 
125
    QTableWidgetItem &operator=(const QTableWidgetItem &other);
 
126
 
 
127
    inline int type() const { return rtti; }
 
128
 
 
129
private:
 
130
    int rtti;
 
131
    QVector<QWidgetItemData> values;
 
132
    QTableWidget *view;
 
133
    QTableModel *model;
 
134
    Qt::ItemFlags itemFlags;
 
135
};
 
136
 
 
137
inline void QTableWidgetItem::setFlags(Qt::ItemFlags aflags)
 
138
{ itemFlags = aflags; }
 
139
 
 
140
inline void QTableWidgetItem::setText(const QString &atext)
 
141
{ setData(Qt::DisplayRole, atext); }
 
142
 
 
143
inline void QTableWidgetItem::setIcon(const QIcon &aicon)
 
144
{ setData(Qt::DecorationRole, aicon); }
 
145
 
 
146
inline void QTableWidgetItem::setStatusTip(const QString &astatusTip)
 
147
{ setData(Qt::StatusTipRole, astatusTip); }
 
148
 
 
149
inline void QTableWidgetItem::setToolTip(const QString &atoolTip)
 
150
{ setData(Qt::ToolTipRole, atoolTip); }
 
151
 
 
152
inline void QTableWidgetItem::setWhatsThis(const QString &awhatsThis)
 
153
{ setData(Qt::WhatsThisRole, awhatsThis); }
 
154
 
 
155
inline void QTableWidgetItem::setFont(const QFont &afont)
 
156
{ setData(Qt::FontRole, afont); }
 
157
 
 
158
#ifndef QT_NO_DATASTREAM
 
159
Q_GUI_EXPORT QDataStream &operator>>(QDataStream &in, QTableWidgetItem &item);
 
160
Q_GUI_EXPORT QDataStream &operator<<(QDataStream &out, const QTableWidgetItem &item);
 
161
#endif
 
162
 
 
163
class QTableWidgetPrivate;
 
164
 
 
165
class Q_GUI_EXPORT QTableWidget : public QTableView
 
166
{
 
167
    Q_OBJECT
 
168
    Q_PROPERTY(int rowCount READ rowCount WRITE setRowCount)
 
169
    Q_PROPERTY(int columnCount READ columnCount WRITE setColumnCount)
 
170
    Q_PROPERTY(bool sortingEnabled READ isSortingEnabled WRITE setSortingEnabled)
 
171
 
 
172
    friend class QTableModel;
 
173
public:
 
174
    explicit QTableWidget(QWidget *parent = 0);
 
175
    QTableWidget(int rows, int columns, QWidget *parent = 0);
 
176
    ~QTableWidget();
 
177
 
 
178
    void setRowCount(int rows);
 
179
    int rowCount() const;
 
180
 
 
181
    void setColumnCount(int columns);
 
182
    int columnCount() const;
 
183
 
 
184
    int row(const QTableWidgetItem *item) const;
 
185
    int column(const QTableWidgetItem *item) const;
 
186
 
 
187
    QTableWidgetItem *item(int row, int column) const;
 
188
    void setItem(int row, int column, QTableWidgetItem *item);
 
189
    QTableWidgetItem *takeItem(int row, int column);
 
190
 
 
191
    QTableWidgetItem *verticalHeaderItem(int row) const;
 
192
    void setVerticalHeaderItem(int row, QTableWidgetItem *item);
 
193
 
 
194
    QTableWidgetItem *horizontalHeaderItem(int column) const;
 
195
    void setHorizontalHeaderItem(int column, QTableWidgetItem *item);
 
196
    void setVerticalHeaderLabels(const QStringList &labels);
 
197
    void setHorizontalHeaderLabels(const QStringList &labels);
 
198
 
 
199
    int currentRow() const;
 
200
    int currentColumn() const;
 
201
    QTableWidgetItem *currentItem() const;
 
202
    void setCurrentItem(QTableWidgetItem *item);
 
203
 
 
204
    void sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder);
 
205
    void setSortingEnabled(bool enable);
 
206
    bool isSortingEnabled() const;
 
207
 
 
208
    void editItem(QTableWidgetItem *item);
 
209
    void openPersistentEditor(QTableWidgetItem *item);
 
210
    void closePersistentEditor(QTableWidgetItem *item);
 
211
 
 
212
    bool isItemSelected(const QTableWidgetItem *item) const;
 
213
    void setItemSelected(const QTableWidgetItem *item, bool select);
 
214
    void setRangeSelected(const QTableWidgetSelectionRange &range, bool select);
 
215
 
 
216
    QList<QTableWidgetSelectionRange> selectedRanges() const;
 
217
    QList<QTableWidgetItem*> selectedItems();
 
218
    QList<QTableWidgetItem*> findItems(const QString &text, Qt::MatchFlags flags) const;
 
219
 
 
220
    int visualRow(int logicalRow) const;
 
221
    int visualColumn(int logicalColumn) const;
 
222
 
 
223
    QTableWidgetItem *itemAt(const QPoint &p) const;
 
224
    inline QTableWidgetItem *itemAt(int x, int y) const;
 
225
    QRect visualItemRect(const QTableWidgetItem *item) const;
 
226
 
 
227
    const QTableWidgetItem *itemPrototype() const;
 
228
    void setItemPrototype(const QTableWidgetItem *item);
 
229
 
 
230
public slots:
 
231
    void scrollToItem(const QTableWidgetItem *item, ScrollHint hint = EnsureVisible);
 
232
    void insertRow(int row);
 
233
    void insertColumn(int column);
 
234
    void removeRow(int row);
 
235
    void removeColumn(int column);
 
236
    void clear();
 
237
 
 
238
signals:
 
239
    void itemPressed(QTableWidgetItem *item);
 
240
    void itemClicked(QTableWidgetItem *item);
 
241
    void itemDoubleClicked(QTableWidgetItem *item);
 
242
 
 
243
    void itemActivated(QTableWidgetItem *item);
 
244
    void itemEntered(QTableWidgetItem *item);
 
245
    void itemChanged(QTableWidgetItem *item);
 
246
 
 
247
    void currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous);
 
248
    void itemSelectionChanged();
 
249
 
 
250
protected:
 
251
    virtual QStringList mimeTypes() const;
 
252
    virtual QMimeData *mimeData(const QList<QTableWidgetItem*> items) const;
 
253
    virtual bool dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action);
 
254
    virtual Qt::DropActions supportedDropActions() const;
 
255
    QList<QTableWidgetItem*> items(const QMimeData *data) const;
 
256
 
 
257
    QModelIndex indexFromItem(QTableWidgetItem *item) const;
 
258
    QTableWidgetItem *itemFromIndex(const QModelIndex &index) const;
 
259
 
 
260
private:
 
261
    void setModel(QAbstractItemModel *model);
 
262
 
 
263
    Q_DECLARE_PRIVATE(QTableWidget)
 
264
    Q_DISABLE_COPY(QTableWidget)
 
265
 
 
266
    Q_PRIVATE_SLOT(d_func(), void emitItemPressed(const QModelIndex &index))
 
267
    Q_PRIVATE_SLOT(d_func(), void emitItemClicked(const QModelIndex &index))
 
268
    Q_PRIVATE_SLOT(d_func(), void emitItemDoubleClicked(const QModelIndex &index))
 
269
    Q_PRIVATE_SLOT(d_func(), void emitItemActivated(const QModelIndex &index))
 
270
    Q_PRIVATE_SLOT(d_func(), void emitItemEntered(const QModelIndex &index))
 
271
    Q_PRIVATE_SLOT(d_func(), void emitItemChanged(const QModelIndex &index))
 
272
    Q_PRIVATE_SLOT(d_func(), void emitCurrentItemChanged(const QModelIndex &previous, const QModelIndex &current))
 
273
};
 
274
 
 
275
inline QTableWidgetItem *QTableWidget::itemAt(int ax, int ay) const
 
276
{ return itemAt(QPoint(ax, ay)); }
 
277
 
 
278
#endif // QTABLEWIDGET_H