/**************************************************************************** | |
** | |
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). | |
** All rights reserved. | |
** Contact: Nokia Corporation (qt-info@nokia.com) | |
** | |
** This file is part of the QtGui module of the Qt Toolkit. | |
** | |
** $QT_BEGIN_LICENSE:LGPL$ | |
** GNU Lesser General Public License Usage | |
** This file may be used under the terms of the GNU Lesser General Public | |
** License version 2.1 as published by the Free Software Foundation and | |
** appearing in the file LICENSE.LGPL included in the packaging of this | |
** file. Please review the following information to ensure the GNU Lesser | |
** General Public License version 2.1 requirements will be met: | |
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | |
** | |
** In addition, as a special exception, Nokia gives you certain additional | |
** rights. These rights are described in the Nokia Qt LGPL Exception | |
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | |
** | |
** GNU General Public License Usage | |
** Alternatively, this file may be used under the terms of the GNU General | |
** Public License version 3.0 as published by the Free Software Foundation | |
** and appearing in the file LICENSE.GPL included in the packaging of this | |
** file. Please review the following information to ensure the GNU General | |
** Public License version 3.0 requirements will be met: | |
** http://www.gnu.org/copyleft/gpl.html. | |
** | |
** Other Usage | |
** Alternatively, this file may be used in accordance with the terms and | |
** conditions contained in a signed written agreement between you and Nokia. | |
** | |
** | |
** | |
** | |
** | |
** $QT_END_LICENSE$ | |
** | |
****************************************************************************/ | |
#ifndef QTABLEWIDGET_H | |
#define QTABLEWIDGET_H | |
#include <QtGui/qtableview.h> | |
#include <QtCore/qvariant.h> | |
#include <QtCore/qvector.h> | |
//#include <QtGui/qitemselectionmodel.h> | |
QT_BEGIN_HEADER | |
QT_BEGIN_NAMESPACE | |
QT_MODULE(Gui) | |
#ifndef QT_NO_TABLEWIDGET | |
class Q_GUI_EXPORT QTableWidgetSelectionRange | |
{ | |
public: | |
QTableWidgetSelectionRange(); | |
QTableWidgetSelectionRange(int top, int left, int bottom, int right); | |
QTableWidgetSelectionRange(const QTableWidgetSelectionRange &other); | |
~QTableWidgetSelectionRange(); | |
inline int topRow() const { return top; } | |
inline int bottomRow() const { return bottom; } | |
inline int leftColumn() const { return left; } | |
inline int rightColumn() const { return right; } | |
inline int rowCount() const { return bottom - top + 1; } | |
inline int columnCount() const { return right - left + 1; } | |
private: | |
int top, left, bottom, right; | |
}; | |
class QTableWidget; | |
class QTableModel; | |
class QWidgetItemData; | |
class QTableWidgetItemPrivate; | |
class Q_GUI_EXPORT QTableWidgetItem | |
{ | |
friend class QTableWidget; | |
friend class QTableModel; | |
public: | |
enum ItemType { Type = 0, UserType = 1000 }; | |
QTableWidgetItem(int type = Type); | |
explicit QTableWidgetItem(const QString &text, int type = Type); | |
explicit QTableWidgetItem(const QIcon &icon, const QString &text, int type = Type); | |
QTableWidgetItem(const QTableWidgetItem &other); | |
virtual ~QTableWidgetItem(); | |
virtual QTableWidgetItem *clone() const; | |
inline QTableWidget *tableWidget() const { return view; } | |
inline int row() const; | |
inline int column() const; | |
inline void setSelected(bool select); | |
inline bool isSelected() const; | |
inline Qt::ItemFlags flags() const { return itemFlags; } | |
void setFlags(Qt::ItemFlags flags); | |
inline QString text() const | |
{ return data(Qt::DisplayRole).toString(); } | |
inline void setText(const QString &text); | |
inline QIcon icon() const | |
{ return qvariant_cast<QIcon>(data(Qt::DecorationRole)); } | |
inline void setIcon(const QIcon &icon); | |
inline QString statusTip() const | |
{ return data(Qt::StatusTipRole).toString(); } | |
inline void setStatusTip(const QString &statusTip); | |
#ifndef QT_NO_TOOLTIP | |
inline QString toolTip() const | |
{ return data(Qt::ToolTipRole).toString(); } | |
inline void setToolTip(const QString &toolTip); | |
#endif | |
#ifndef QT_NO_WHATSTHIS | |
inline QString whatsThis() const | |
{ return data(Qt::WhatsThisRole).toString(); } | |
inline void setWhatsThis(const QString &whatsThis); | |
#endif | |
inline QFont font() const | |
{ return qvariant_cast<QFont>(data(Qt::FontRole)); } | |
inline void setFont(const QFont &font); | |
inline int textAlignment() const | |
{ return data(Qt::TextAlignmentRole).toInt(); } | |
inline void setTextAlignment(int alignment) | |
{ setData(Qt::TextAlignmentRole, alignment); } | |
inline QColor backgroundColor() const | |
{ return qvariant_cast<QColor>(data(Qt::BackgroundColorRole)); } | |
inline void setBackgroundColor(const QColor &color) | |
{ setData(Qt::BackgroundColorRole, color); } | |
inline QBrush background() const | |
{ return qvariant_cast<QBrush>(data(Qt::BackgroundRole)); } | |
inline void setBackground(const QBrush &brush) | |
{ setData(Qt::BackgroundRole, brush); } | |
inline QColor textColor() const | |
{ return qvariant_cast<QColor>(data(Qt::TextColorRole)); } | |
inline void setTextColor(const QColor &color) | |
{ setData(Qt::TextColorRole, color); } | |
inline QBrush foreground() const | |
{ return qvariant_cast<QBrush>(data(Qt::ForegroundRole)); } | |
inline void setForeground(const QBrush &brush) | |
{ setData(Qt::ForegroundRole, brush); } | |
inline Qt::CheckState checkState() const | |
{ return static_cast<Qt::CheckState>(data(Qt::CheckStateRole).toInt()); } | |
inline void setCheckState(Qt::CheckState state) | |
{ setData(Qt::CheckStateRole, state); } | |
inline QSize sizeHint() const | |
{ return qvariant_cast<QSize>(data(Qt::SizeHintRole)); } | |
inline void setSizeHint(const QSize &size) | |
{ setData(Qt::SizeHintRole, size); } | |
virtual QVariant data(int role) const; | |
virtual void setData(int role, const QVariant &value); | |
virtual bool operator<(const QTableWidgetItem &other) const; | |
#ifndef QT_NO_DATASTREAM | |
virtual void read(QDataStream &in); | |
virtual void write(QDataStream &out) const; | |
#endif | |
QTableWidgetItem &operator=(const QTableWidgetItem &other); | |
inline int type() const { return rtti; } | |
private: | |
int rtti; | |
QVector<QWidgetItemData> values; | |
QTableWidget *view; | |
QTableWidgetItemPrivate *d; | |
Qt::ItemFlags itemFlags; | |
}; | |
inline void QTableWidgetItem::setText(const QString &atext) | |
{ setData(Qt::DisplayRole, atext); } | |
inline void QTableWidgetItem::setIcon(const QIcon &aicon) | |
{ setData(Qt::DecorationRole, aicon); } | |
inline void QTableWidgetItem::setStatusTip(const QString &astatusTip) | |
{ setData(Qt::StatusTipRole, astatusTip); } | |
#ifndef QT_NO_TOOLTIP | |
inline void QTableWidgetItem::setToolTip(const QString &atoolTip) | |
{ setData(Qt::ToolTipRole, atoolTip); } | |
#endif | |
#ifndef QT_NO_WHATSTHIS | |
inline void QTableWidgetItem::setWhatsThis(const QString &awhatsThis) | |
{ setData(Qt::WhatsThisRole, awhatsThis); } | |
#endif | |
inline void QTableWidgetItem::setFont(const QFont &afont) | |
{ setData(Qt::FontRole, afont); } | |
#ifndef QT_NO_DATASTREAM | |
Q_GUI_EXPORT QDataStream &operator>>(QDataStream &in, QTableWidgetItem &item); | |
Q_GUI_EXPORT QDataStream &operator<<(QDataStream &out, const QTableWidgetItem &item); | |
#endif | |
class QTableWidgetPrivate; | |
class Q_GUI_EXPORT QTableWidget : public QTableView | |
{ | |
Q_OBJECT | |
Q_PROPERTY(int rowCount READ rowCount WRITE setRowCount) | |
Q_PROPERTY(int columnCount READ columnCount WRITE setColumnCount) | |
friend class QTableModel; | |
public: | |
explicit QTableWidget(QWidget *parent = 0); | |
QTableWidget(int rows, int columns, QWidget *parent = 0); | |
~QTableWidget(); | |
void setRowCount(int rows); | |
int rowCount() const; | |
void setColumnCount(int columns); | |
int columnCount() const; | |
int row(const QTableWidgetItem *item) const; | |
int column(const QTableWidgetItem *item) const; | |
QTableWidgetItem *item(int row, int column) const; | |
void setItem(int row, int column, QTableWidgetItem *item); | |
QTableWidgetItem *takeItem(int row, int column); | |
QTableWidgetItem *verticalHeaderItem(int row) const; | |
void setVerticalHeaderItem(int row, QTableWidgetItem *item); | |
QTableWidgetItem *takeVerticalHeaderItem(int row); | |
QTableWidgetItem *horizontalHeaderItem(int column) const; | |
void setHorizontalHeaderItem(int column, QTableWidgetItem *item); | |
QTableWidgetItem *takeHorizontalHeaderItem(int column); | |
void setVerticalHeaderLabels(const QStringList &labels); | |
void setHorizontalHeaderLabels(const QStringList &labels); | |
int currentRow() const; | |
int currentColumn() const; | |
QTableWidgetItem *currentItem() const; | |
void setCurrentItem(QTableWidgetItem *item); | |
void setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command); | |
void setCurrentCell(int row, int column); | |
void setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command); | |
void sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder); | |
void setSortingEnabled(bool enable); | |
bool isSortingEnabled() const; | |
void editItem(QTableWidgetItem *item); | |
void openPersistentEditor(QTableWidgetItem *item); | |
void closePersistentEditor(QTableWidgetItem *item); | |
QWidget *cellWidget(int row, int column) const; | |
void setCellWidget(int row, int column, QWidget *widget); | |
inline void removeCellWidget(int row, int column); | |
bool isItemSelected(const QTableWidgetItem *item) const; | |
void setItemSelected(const QTableWidgetItem *item, bool select); | |
void setRangeSelected(const QTableWidgetSelectionRange &range, bool select); | |
QList<QTableWidgetSelectionRange> selectedRanges() const; | |
QList<QTableWidgetItem*> selectedItems(); | |
QList<QTableWidgetItem*> findItems(const QString &text, Qt::MatchFlags flags) const; | |
int visualRow(int logicalRow) const; | |
int visualColumn(int logicalColumn) const; | |
QTableWidgetItem *itemAt(const QPoint &p) const; | |
inline QTableWidgetItem *itemAt(int x, int y) const; | |
QRect visualItemRect(const QTableWidgetItem *item) const; | |
const QTableWidgetItem *itemPrototype() const; | |
void setItemPrototype(const QTableWidgetItem *item); | |
public Q_SLOTS: | |
void scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible); | |
void insertRow(int row); | |
void insertColumn(int column); | |
void removeRow(int row); | |
void removeColumn(int column); | |
void clear(); | |
void clearContents(); | |
Q_SIGNALS: | |
void itemPressed(QTableWidgetItem *item); | |
void itemClicked(QTableWidgetItem *item); | |
void itemDoubleClicked(QTableWidgetItem *item); | |
void itemActivated(QTableWidgetItem *item); | |
void itemEntered(QTableWidgetItem *item); | |
void itemChanged(QTableWidgetItem *item); | |
void currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous); | |
void itemSelectionChanged(); | |
void cellPressed(int row, int column); | |
void cellClicked(int row, int column); | |
void cellDoubleClicked(int row, int column); | |
void cellActivated(int row, int column); | |
void cellEntered(int row, int column); | |
void cellChanged(int row, int column); | |
void currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); | |
protected: | |
bool event(QEvent *e); | |
virtual QStringList mimeTypes() const; | |
virtual QMimeData *mimeData(const QList<QTableWidgetItem*> items) const; | |
virtual bool dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action); | |
virtual Qt::DropActions supportedDropActions() const; | |
QList<QTableWidgetItem*> items(const QMimeData *data) const; | |
QModelIndex indexFromItem(QTableWidgetItem *item) const; | |
QTableWidgetItem *itemFromIndex(const QModelIndex &index) const; | |
void dropEvent(QDropEvent *event); | |
private: | |
void setModel(QAbstractItemModel *model); | |
Q_DECLARE_PRIVATE(QTableWidget) | |
Q_DISABLE_COPY(QTableWidget) | |
Q_PRIVATE_SLOT(d_func(), void _q_emitItemPressed(const QModelIndex &index)) | |
Q_PRIVATE_SLOT(d_func(), void _q_emitItemClicked(const QModelIndex &index)) | |
Q_PRIVATE_SLOT(d_func(), void _q_emitItemDoubleClicked(const QModelIndex &index)) | |
Q_PRIVATE_SLOT(d_func(), void _q_emitItemActivated(const QModelIndex &index)) | |
Q_PRIVATE_SLOT(d_func(), void _q_emitItemEntered(const QModelIndex &index)) | |
Q_PRIVATE_SLOT(d_func(), void _q_emitItemChanged(const QModelIndex &index)) | |
Q_PRIVATE_SLOT(d_func(), void _q_emitCurrentItemChanged(const QModelIndex &previous, const QModelIndex ¤t)) | |
Q_PRIVATE_SLOT(d_func(), void _q_sort()) | |
Q_PRIVATE_SLOT(d_func(), void _q_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)) | |
}; | |
inline void QTableWidget::removeCellWidget(int arow, int acolumn) | |
{ setCellWidget(arow, acolumn, 0); } | |
inline QTableWidgetItem *QTableWidget::itemAt(int ax, int ay) const | |
{ return itemAt(QPoint(ax, ay)); } | |
inline int QTableWidgetItem::row() const | |
{ return (view ? view->row(this) : -1); } | |
inline int QTableWidgetItem::column() const | |
{ return (view ? view->column(this) : -1); } | |
inline void QTableWidgetItem::setSelected(bool aselect) | |
{ if (view) view->setItemSelected(this, aselect); } | |
inline bool QTableWidgetItem::isSelected() const | |
{ return (view ? view->isItemSelected(this) : false); } | |
#endif // QT_NO_TABLEWIDGET | |
QT_END_NAMESPACE | |
QT_END_HEADER | |
#endif // QTABLEWIDGET_H |