This enum is used to define whether a cell is editable or
read-only (in conjunction with other settings), and how the cell
should be displayed.
- QTableItem::Always -
The cell always looks editable.
Using this EditType ensures that the editor created with
createEditor() (by default a QLineEdit) is always visible. This
has implications for the alignment of the content: the default
editor aligns everything (even numbers) to the left whilst
numerical values in the cell are by default aligned to the right.
If a cell with the edit type Always looks misaligned you could
reimplement createEditor() for these items.
- QTableItem::WhenCurrent -
The cell looks editable only when it has keyboard focus (see
QTable::setCurrentCell()).
- QTableItem::OnTyping -
The cell looks editable only when the user types in it or
double-clicks it. It resembles the WhenCurrent functionality
but is, perhaps, nicer.
The OnTyping edit type is the default when QTableItem objects
are created by the convenience functions QTable::setText() and
QTable::setPixmap().
- QTableItem::Never - The cell is not editable.
The cell is actually editable only if QTable::isRowReadOnly() is
FALSE for its row, QTable::isColumnReadOnly() is FALSE for its
column, and QTable::isReadOnly() is FALSE.
QComboTableItems have an isEditable() property. This property is
used to indicate whether the user may enter their own text or are
restricted to choosing one of the choices in the list.
QComboTableItems may be interacted with only if they are editable
in accordance with their EditType as described above.
Member Function Documentation
QTableItem::QTableItem ( QTable * table, EditType et, const QString & text )
Creates a table item that is a child of table table with text
text. The item has the EditType et.
The table item will use a QLineEdit for its editor, will not
word-wrap and will occupy a single cell. Insert the table item
into a table with QTable::setItem().
The table takes ownership of the table item, so a table item
should not be inserted into more than one table at a time.
QTableItem::QTableItem ( QTable * table, EditType et, const QString & text, const QPixmap & p )
Creates a table item that is a child of table table with text
text and pixmap p. The item has the EditType et.
The table item will display the pixmap to the left of the text. It
will use a QLineEdit for editing the text, will not word-wrap and
will occupy a single cell. Insert the table item into a table with
QTable::setItem().
The table takes ownership of the table item, so a table item
should not be inserted in more than one table at a time.
QTableItem::~QTableItem () [virtual]
The destructor deletes this item and frees all allocated
resources.
If the table item is in a table (i.e. was inserted with
setItem()), it will be removed from the table and the cell it
occupied.
int QTableItem::alignment () const [virtual]
The alignment function returns how the text contents of the cell
are aligned when drawn. The default implementation aligns numbers
to the right and any other text to the left.
See also Qt::AlignmentFlags.
int QTableItem::col () const
Returns the column where the table item is located. If the cell
spans multiple columns, this function returns the left-most
column.
See also row() and setCol().
int QTableItem::colSpan () const
Returns the column span of the table item, usually 1.
See also setSpan() and rowSpan().
QWidget * QTableItem::createEditor () const [virtual]
This virtual function creates an editor which the user can
interact with to edit the cell's contents. The default
implementation creates a QLineEdit.
If the function returns 0, the cell is read-only.
The returned widget should preferably be invisible, ideally with
QTable::viewport() as parent.
If you reimplement this function you'll almost certainly need to
reimplement setContentFromEditor(), and may need to reimplement
sizeHint().
QWidget *ComboItem::createEditor() const
{
// create an editor - a combobox in our case
( (ComboItem*)this )->cb = new QComboBox( table()->viewport() );
QObject::connect( cb, SIGNAL( activated( int ) ), table(), SLOT( doValueChanged() ) );
cb->insertItem( "Yes" );
cb->insertItem( "No" );
// and initialize it
cb->setCurrentItem( text() == "No" ? 1 : 0 );
return cb;
See also QTable::createEditor(), setContentFromEditor() and QTable::viewport().
Example: table/statistics/statistics.cpp.
EditType QTableItem::editType () const
Returns the table item's edit type.
This is set when the table item is constructed.
See also EditType and QTableItem().
bool QTableItem::isEnabled () const
Returns TRUE if the table item is enabled; otherwise returns FALSE.
See also setEnabled().
bool QTableItem::isReplaceable () const
This function returns whether the contents of the cell may be
replaced with the contents of another table item. Regardless of
this setting, table items that span more than one cell may not
have their contents replaced by another table item.
(This differs from EditType because EditType is concerned with
whether the user is able to change the contents of a cell.)
See also setReplaceable() and EditType.
QString QTableItem::key () const [virtual]
This virtual function returns the key that should be used for
sorting. The default implementation returns the text() of the
relevant item.
See also QTable::sorting.
void QTableItem::paint ( QPainter * p, const QColorGroup & cg, const QRect & cr, bool selected ) [virtual]
This virtual function is used to paint the contents of an item
using the painter p in the rectangular area cr using the
color group cg.
If selected is TRUE the cell is displayed in a way that
indicates that it is highlighted.
You don't usually need to use this function but if you want to
draw custom content in a cell you will need to reimplement it.
Note that the painter is not clipped by default in order to get
maximum efficiency. If you want clipping, use
p->setClipRect( table()->cellRect(row, col), QPainter::ClipPainter );
//... your drawing code
p->setClipping( FALSE );
Example: table/statistics/statistics.cpp.
QPixmap QTableItem::pixmap () const [virtual]
Returns the table item's pixmap or a null pixmap if no pixmap has
been set.
See also setPixmap() and text().
int QTableItem::row () const
Returns the row where the table item is located. If the cell spans
multiple rows, this function returns the top-most row.
See also col() and setRow().
int QTableItem::rowSpan () const
Returns the row span of the table item, usually 1.
See also setSpan() and colSpan().
int QTableItem::rtti () const [virtual]
Returns the Run Time Type Identification value for this table item
which for QTableItems is 0.
When you create subclasses based on QTableItem make sure that each
subclass returns a unique rtti() value. It is advisable to use
values greater than 1000, preferably large random numbers, to
allow for extensions to this class.
See also QCheckTableItem::rtti() and QComboTableItem::rtti().
Reimplemented in QComboTableItem and QCheckTableItem.
void QTableItem::setCol ( int c ) [virtual]
Sets column c as the table item's column. Usually you will not
need to call this function.
If the cell spans multiple columns, this function sets the
left-most column and retains the width of the multi-cell table
item.
See also col(), setRow() and colSpan().
void QTableItem::setContentFromEditor ( QWidget * w ) [virtual]
Whenever the content of a cell has been edited by the editor w,
QTable calls this virtual function to copy the new values into the
QTableItem.
If you reimplement createEditor() and return something that is not
a QLineEdit you will almost certainly have to reimplement this
function.
void ComboItem::setContentFromEditor( QWidget *w )
{
// the user changed the value of the combobox, so synchronize the
// value of the item (its text), with the value of the combobox
if ( w->inherits( "QComboBox" ) )
setText( ( (QComboBox*)w )->currentText() );
else
QTableItem::setContentFromEditor( w );
See also QTable::setCellContentFromEditor().
Example: table/statistics/statistics.cpp.
void QTableItem::setEnabled ( bool b ) [virtual]
If b is TRUE, the table item is enabled; if b is FALSE the
table item is disabled.
A disabled item doesn't respond to user interaction.
See also isEnabled().
void QTableItem::setPixmap ( const QPixmap & p ) [virtual]
Sets pixmap p to be this item's pixmap.
Note that setPixmap() does not update the cell the table item
belongs to. Use QTable::updateCell() to repaint the cell's
contents.
For QComboTableItems and QCheckTableItems this function
has no visible effect.
See also QTable::setPixmap(), pixmap() and setText().
void QTableItem::setReplaceable ( bool b ) [virtual]
If b is TRUE it is acceptable to replace the contents of the
cell with the contents of another QTableItem. If b is FALSE the
contents of the cell may not be replaced by the contents of
another table item. Table items that span more than one cell may
not have their contents replaced by another table item.
(This differs from EditType because EditType is concerned with
whether the user is able to change the contents of a cell.)
See also isReplaceable().
void QTableItem::setRow ( int r ) [virtual]
Sets row r as the table item's row. Usually you do not need to
call this function.
If the cell spans multiple rows, this function sets the top row
and retains the height of the multi-cell table item.
See also row(), setCol() and rowSpan().
void QTableItem::setSpan ( int rs, int cs ) [virtual]
Changes the extent of the QTableItem so that it spans multiple
cells covering rs rows and cs columns. The top left cell is
the original cell.
Warning: This function only works if the item has already been
inserted into the table using e.g. QTable::setItem(). This
function also checks to make sure if rs and cs are within
the bounds of the table and returns without changing the span if
they are not.
See also rowSpan() and colSpan().
void QTableItem::setText ( const QString & str ) [virtual]
Changes the table item's text to str.
Note that setText() does not update the cell the table item
belongs to. Use QTable::updateCell() to repaint the cell's
contents.
See also QTable::setText(), text(), setPixmap() and QTable::updateCell().
Example: table/statistics/statistics.cpp.
void QTableItem::setWordWrap ( bool b ) [virtual]
If b is TRUE, the cell's text will be wrapped over multiple
lines, when necessary, to fit the width of the cell; otherwise the
text will be written as a single line.
See also wordWrap(), QTable::adjustColumn() and QTable::setColumnStretchable().
QSize QTableItem::sizeHint () const [virtual]
This virtual function returns the size a cell needs to show its
entire content.
If you subclass QTableItem you will often need to reimplement this
function.
QTable * QTableItem::table () const
Returns the QTable the table item belongs to.
See also QTable::setItem() and QTableItem().
QString QTableItem::text () const [virtual]
Returns the text of the table item or QString::null if there is no
text.
To ensure that the current value of the editor is returned,
setContentFromEditor() is called:
- if the editMode() is Always, or
- if editMode() is not Always but the editor of the cell is
active and the editor is not a QLineEdit.
This means that text() returns the original text value of the item
if the editor is a line edit, until the user commits an edit (e.g.
by pressing Enter or Tab) in which case the new text is returned.
For other editors (e.g. a combobox) setContentFromEditor() is
always called so the currently display value is the one returned.
See also setText() and pixmap().
bool QTableItem::wordWrap () const
Returns TRUE if word wrap is enabled for the cell; otherwise
returns FALSE.
See also setWordWrap().
This file is part of the Qt toolkit.
Copyright © 1995-2002
Trolltech. All Rights Reserved.