QTable类参考(下)
(2016-04-17 21:36:55)
标签:
qtit |
分类: QT |
QHeader * QTable::horizontalHeader () const
返回表格的顶部QHeader。
该标题包含列标。
要修改列标,使用QHeader::setLabel(),例如,
horizontalHeader()->setLabel( 0, tr( "File" ) );
也参见verticalHeader()、setTopMargin()和QHeader。
例子:chart/setdataform.cpp和table/small-table-demo/main.cpp。
int QTable::indexOf ( int row,
int col )
const [protected]
返回单一整数,它通过把二维的表格映射为一维数组来标识详细的row和col。
这很有用,例如如果你要使用QIntDict,以把整数映射到稀疏表格中的使用的单元格上。
void QTable::insertColumns (
int col, int count = 1
) [virtual slot]
在列col处插入count个空列。
也参见insertRows()和removeColumn()。
void QTable::insertRows ( int row,
int count = 1 ) [virtual
slot]
在行row处插入count个空行。
也参见insertColumns()和removeRow()。
void QTable::insertWidget ( int row,
int col, QWidget * w
) [virtual protected]
在内部数据结构里,在row、col处插入部件w。详情参见setCellWidget()的文档。
如果不使用QTableItem,需要重写本函数:参见关于大表格的注意事项。
bool QTable::isColumnReadOnly (
int col ) const
返回列col是否只读。
该列的某个单元格是可编辑还是只读,取决于该单元格的EditType和这个设置:参见QTableItem::EditType。
也参见setColumnReadOnly()和isRowReadOnly()。
bool QTable::isColumnSelected (
int col, bool full = FALSE )
const
如果列col被选中,返回TRUE;否则返回FALSE。
如果full为FALSE(缺省的情况),“列被选中”意味着该列的至少一个单元格被选中;如果full为TRUE,“列被选中”则意味着该列所有的单元格都被选中。
也参见isRowSelected()和isSelected()。
bool QTable::isColumnStretchable (
int col )
const [slot]
如果列col可伸缩,返回TRUE;否则返回FALSE。
也参见setColumnStretchable()和isRowStretchable()。
bool QTable::isEditing ()
const [protected]
如果EditMode为Editing或者Replacing,返回TRUE。如果EditMode为NotEditing返回FALSE。
也参见QTable::EditMode。
bool QTable::isReadOnly () const
如果表格只读,返回TRUE;否则返回FALSE。详情参见"readOnly"属性。
bool QTable::isRowReadOnly (
int row ) const
返回行row是否只读。
该行的某个单元格是可编辑还是只读,取决于该单元格的EditType和这个设置:参见QTableItem::EditType。
也参见setRowReadOnly()和isColumnReadOnly()。
bool QTable::isRowSelected (
int row, bool full = FALSE )
const
如果行row被选中,返回TRUE;否则返回FALSE。
如果full为FALSE(缺省的情况),“行被选中”意味着该行的至少一个单元格被选中;如果full为TRUE,“行被选中”则意味着该行所有的单元格都被选中。
也参见isColumnSelected()和isSelected()。
bool QTable::isRowStretchable (
int row )
const [slot]
如果行row可伸缩,返回TRUE;否则返回FALSE。
也参见setRowStretchable()和isColumnStretchable()。
bool QTable::isSelected ( int row,
int col ) const
如果row、col处的单元格被选中,返回TRUE;否则返回FALSE。
也参见isRowSelected()和isColumnSelected()。
QTableItem * QTable::item ( int row,
int col )
const [virtual]
返回QTableItem,它代表着在row、col处的单元格的内容。
如果row或者col超出范围,或者该单元格没有设置内容,item()返回0。
如果不使用QTableItem,需要重写本函数:参见关于大表格的注意事项。
也参见setItem()。
int QTable::numCols ()
const [virtual]
返回表格中的列数。详情参见"numCols"属性。
在QDataTable处被重新实现。
int QTable::numRows ()
const [virtual]
返回表格中的行数。详情参见"numRows"属性。
在QDataTable处被重新实现。
int QTable::numSelections () const
返回当前选中区域的数目。
也参见currentSelection()。
void QTable::paintCell ( QPainter * p,
int row, int col,
const QRect & cr,
bool selected, const QColorGroup & cg
) [virtual]
在画具p上绘制在row、col处的单元格。该画具已经被转变为单元格原有的。cr描述了在内容坐标系统中单元格的坐标。
如果selected为TRUE,单元格将高亮显示。
cg是应用来绘制该单元格内容的颜色组。
如果你想绘制定制的单元格内容,例如右对齐的文本,你必须要么重写paintCell(),要么写QTableItem的子类并且重写QTableItem::paint()以完成定制绘制。
如果你想使用QTableItem的子类,例如用来保存数据结构,那么重写QTableItem::paint()也许最合适。对于你要立即绘制的数据,例如从数据库中得到的数据,则可能最好是重写paintCell()。注意,如果你重写paintCell(),也就是说不使用QTableItems,你就必须重写其他一些函数:参见关于大表格的注意事项。
注意,缺省情况下为提高效率,画具并没有裁剪。如果你需要裁剪,使用如下代码:
p->setClipRect(cellRect(row, col), QPainter::CoordPainter ); //... your drawing code p->setClipping( FALSE );
void QTable::paintCell ( QPainter * p,
int row, int col,
const QRect & cr,
bool selected
) [virtual]
这是一个重载的成员函数,为便利而提供。其行为本质上类似上一个函数。
使用另外的那个paintCell()函数。本函数只是为了反向兼容性。
void QTable::paintEmptyArea
( QPainter * p,
int cx, int cy,
int cw, int ch
) [virtual protected]
本函数以画具p的背景色,填充从cx、cy位置开始的,宽cw象素,高ch象素的矩形。
paintEmptyArea()被drawContents()调用,以擦除或者填充未用区域。
void QTable::paintFocus ( QPainter * p,
const QRect & cr
) [virtual]
绘制当前单元格的焦点矩形(参见currentRow()、currentColumn())。
画具p已经被转变为单元格原有的,cr则指定了以内容坐标形式的单元格几何特性。
QPixmap QTable::pixmap ( int row,
int col )
const [virtual]
返回为在row、col处的单元格设置的象素映射,如果该单元格不含象素映射,返回无效象素映射(null-pixmap)。
也参见setPixmap()。
void QTable::pressed ( int row,
int col, int button,
const QPoint & mousePos
) [signal]
当鼠标按键button被按下时,本信号被发送。事件发生所在的单元格在row、col,鼠标位置在mousePos结构里。
void QTable::removeColumn ( int col
) [virtual slot]
删去列col,并且删除其所有单元格,包括单元格中可能有的任何表项和部件。
也参见removeColumns()、hideColumn()、insertColumns()和removeRow()。
void QTable::removeColumns (
const QMemArray & cols
) [virtual slot]
删去数组cols中的列,并且删除其所有单元格,包括单元格中可能有的任何表项和部件。
传入的数组必须只包含合法的列(在0到numCols() - 1的范围内),没有重复,按升序排列。
也参见removeColumn()、insertColumns()和removeRows()。
void QTable::removeRow ( int row
) [virtual slot]
删去行row,并且删除其所有单元格,包括单元格中可能有的任何表项和部件。
也参见hideRow()、insertRows()、removeColumn()和removeRows()。
void QTable::removeRows (
const QMemArray & rows
) [virtual slot]
删去数组rows中的行,并且删除其所有单元格,包括单元格中可能有的任何表项和部件。
传入的数组必须只包含合法的行(在0到numRows() - 1的范围内),没有重复,按升序排列。
也参见removeRow()、insertRows()和removeColumns()。
void QTable::removeSelection (
const QTableSelection & s
) [virtual]
如果表格中有选中区域s,该选中区域从表格中被删去。
也参见addSelection()和numSelections()。
void QTable::removeSelection (
int num ) [virtual]
这是一个重载的成员函数,为便利而提供。其行为本质上类似上一个函数。
从表格中删去编号为num的选中区域。
也参见numSelections()、addSelection()和clearSelection()。
void QTable::repaintSelections ()
重绘所有的选中区域。
void QTable::resizeData ( int len
) [virtual protected]
当QTable的内部数组需要调整大小至len个元素时被调用。
如果不使用QTableItem,需要重写本函数为空方法以免浪费内存。更多详情参见关于大表格的注意事项。
int QTable::rowAt (
int y )
const [virtual]
返回在位置y的行的序数。y必须以内容坐标的形式给出。
int QTable::rowHeight ( int row )
const [virtual]
返回行row的高度。
也参见setRowHeight()和columnWidth()。
例子:table/small-table-demo/main.cpp。
void QTable::rowHeightChanged (
int row ) [virtual protected
slot]
无论何时行row的宽度改变,都应该调用本函数。它更新受影响的各个行的几何特性,重绘表格以反映所做的改变。
void QTable::rowIndexChanged (
int section, int fromIndex,
int toIndex ) [virtual
protected slot]
当行的顺序将被改变时调用,也就是说,当用户从fromIndex到toIndex移动行标题section的时候。
如果要编程上改变行的顺序,可以调用swapRows()或者swapColumns()。
也参见QHeader::indexChange()和columnIndexChanged()。
bool QTable::rowMovingEnabled () const
如果用户可以移动行,返回TRUE;否则返回FALSE。详情参见"rowMovingEnabled"属性。
int QTable::rowPos ( int row )
const [virtual]
以内容坐标的形式返回行row的y坐标。
QTableSelection QTable::selection ( int num )
const
返回编号为num的选中区域,或者一个空QTableSelection,如果num超出范围的话(参见QTableSelection::isNull())。
void QTable::selectionChanged
() [signal]
无论何时选中区域改变,本信号被发送。
也参见QTableSelection。
SelectionMode QTable::selectionMode () const
返回当前选中模式。详情参见"selectionMode"属性。
void QTable::setCellContentFromEditor (
int row, int col
) [virtual protected]
用来以在row、col处的单元格的编辑器的内容,替换该单元格内容。如果该单元格已经有一个QTableItem,则先被删去(参见clearCell())。
例如如果你想依编辑器的内容来生成不同的QTableItem,就需要重写本函数。
如果不需要QTableItem,你就需要重写本函数,以把用户输入数据保存到你的数据结构中。(参见关于大表格的注意事项。)
也参见QTableItem::setContentFromEditor()和createEditor()。
void QTable::setCellWidget (
int row,
int col, QWidget * e
) [virtual]
把部件e放置到在row、col处的单元格中,并且在单元格几何特性改变时负责定位和调整大小。
缺省情况下,部件被插入到numRows()×numCols()个元素的向量中。对于很大的表格,你很可能会要把部件存储到消耗更少内存的数据结构中。(参见关于大表格的注意事项)。为了支持使用你自己的数据结构,本函数调用insertWidget()以增加部件到内部数据结构。要使用你自己的数据结构,需要重写insertWidget()、cellWidget()和clearCellWidget()。
单元格的部件是使用“new”操作符动态生成的,一旦表格被销毁,也自动被销毁。当使用setCellWidget()时,表格拥有部件的所有权。
void QTable::setColumnMovingEnabled (
bool b ) [virtual
slot]
设置用户是否可以移动列为b。详情参见"columnMovingEnabled"属性。
void QTable::setColumnReadOnly (
int col, bool ro
) [virtual slot]
如果ro为TRUE,列col被设置为只读;否则被设置为可编辑。
该列的某个单元格是可编辑还是只读,取决于该单元格的EditType和这个设置:参见QTableItem::EditType。
也参见isColumnReadOnly()、setRowReadOnly()和readOnly。
void QTable::setColumnStretchable (
int col, bool stretch
) [virtual slot]
如果stretch为TRUE,列col被设置为可伸缩;否则被设置为不可伸缩。
如果表格部件的宽度减少或者增加,可伸缩的列将尽可能适合空间地变窄或者变宽。用户不能手动调整可伸缩的列的大小。
也参见isColumnStretchable()、setRowStretchable()和adjustColumn()。
void QTable::setColumnWidth (
int col, int w
) [virtual slot]
调整列col为w象素宽。
也参见columnWidth()和setRowHeight()。
Reimplemented in
void QTable::setCurrentCell (
int row, int col
) [virtual slot]
把焦点移到在row、col的单元格上。
也参见currentRow()和currentColumn()。
void QTable::setDragEnabled (
bool b ) [virtual
slot]
如果b为TRUE,当用户对选中的单元格按下且移动鼠标时,表格开始一个拖拽事件(参见dragObject())。
void QTable::setEditMode ( EditMode mode,
int row, int col
) [protected]
设置当前的编辑模式为mode,当前编辑行为row,当前编辑列为col。
也参见EditMode。
void QTable::setFocusStyle
( FocusStyle fs
) [virtual]
设置当前(焦点)单元格如何绘制为fs。详情参见"focusStyle"属性。
void QTable::setItem ( int row,
int col, QTableItem * item
) [virtual]
把表项item插入到表格的行row、列column 如果不使用QTableItem,需要重写本函数:参见关于大表格的注意事项。
例子:table/small-table-demo/main.cpp。
void QTable::setLeftMargin ( int m
) [virtual slot]
设置左边界为m象素宽。
显示行号的verticalHeader()占据这个边界位置。
在阿拉伯(arabic)或者希伯莱(hebrew)localization中,verticalHeader()出现在表格的右边,本函数将设置右边界。
也参见leftMargin()、setTopMargin()和verticalHeader()。
void QTable::setNumCols ( int r
) [virtual slot]
设置表格中列数为r。详情参见"numCols"属性。
void QTable::setNumRows ( int r
) [virtual slot]
设置表格中行数为r。详情参见"numRows"属性。
void QTable::setPixmap ( int row,
int col, const QPixmap & pix
) [virtual]
设置在row、col处的单元格中的象素映射为pix。
如果单元格中没有表项,则生成一个EditType为OnTyping的QTableItem;否则,已存在的表项的象素映射(如果有的话)被pix所替代。
注意:QComboTableItem和QCheckTableItem不显示象素映射。
也参见pixmap()、setText()、setItem()和QTableItem::setPixmap()。
例子:chart/setdataform.cpp和table/small-table-demo/main.cpp。
void QTable::setReadOnly ( bool b
) [virtual slot]
设置表格是否只读为b。详情参见"readOnly"属性。
void QTable::setRowHeight ( int row,
int h ) [virtual
slot]
调整行row为h象素高。
也参见rowHeight()和setColumnWidth()。
void QTable::setRowMovingEnabled (
bool b ) [virtual
slot]
设置用户是否可以移动行为b。详情参见"rowMovingEnabled"属性。
void QTable::setRowReadOnly (
int row, bool ro
) [virtual slot]
如果ro为TRUE,行row被设置为只读;否则被设置为可编辑。
该行的某个单元格是可编辑还是只读,取决于该单元格的EditType和这个设置:参见QTableItem::EditType。
也参见isRowReadOnly()、setColumnReadOnly()和readOnly。
void QTable::setRowStretchable (
int row, bool stretch
) [virtual slot]
如果stretch为TRUE,行row被设置为可伸缩;否则被设置为不可伸缩。
如果表格部件的高度减少或者增加,可伸缩的行将尽可能适合空间地变矮或者变高。用户不能手动调整可伸缩的行的大小。
也参见isRowStretchable()和setColumnStretchable()。
void QTable::setSelectionMode
( SelectionMode mode
) [virtual]
设置当前选中模式为mode。详情参见"selectionMode"属性。
void QTable::setShowGrid ( bool b
) [virtual slot]
设置表格的栅格是否显示为b。详情参见"showGrid"属性。
void QTable::setSorting ( bool b
) [virtual slot]
设置点击列标题是否对该列排序为b。详情参见"sorting"属性。
void QTable::setText ( int row,
int col, const QString & text
) [virtual]
设置在row、col处的单元格的文本为text。
如果单元格中没有表项,则生成一个EditType为OnTyping的QTableItem;否则,已存在的表项的文本(如果有的话)被text所替代。
也参见text()、setPixmap()、setItem()和QTableItem::setText()。
例子:chart/setdataform.cpp和table/small-table-demo/main.cpp。
void QTable::setTopMargin ( int m
) [virtual slot]
设置顶部边界为m象素高。
显示列标的horizontalHeader()占据这个边界位置。
也参见topMargin()和setLeftMargin()。
void QTable::showColumn ( int col
) [virtual slot]
显示列col。
也参见hideColumn()和showRow()。
bool QTable::showGrid () const
如果表格的栅格可见,返回TRUE;否则返回FALSE。详情参见"showGrid"属性。
void QTable::showRow ( int row
) [virtual slot]
显示行row。
也参见hideRow()和showColumn()。
void QTable::sortColumn ( int col,
bool ascending = TRUE,
bool wholeRows = FALSE
) [virtual]
对列col排序。如果ascending为TRUE,按升序;否则按降序。
如果wholeRows为TRUE,用swapRows()对全部行排序;否则,只用swapCells()对该列的单元格排序。
注意:如果不使用QTableItem,需要重写swapRows()和swapCells()。(参见关于大表格的注意事项。)
也参见swapRows()。
例子:table/statistics/statistics.cpp。
在QDataTable处被重新实现。
bool QTable::sorting () const
如果点击列标题则对该列排序,返回TRUE;否则返回FALSE。详情参见"sorting"属性。
void QTable::startDrag () [virtual
protected]
开始一次拖拽。
通常你不必调用或者重新本函数。
也参见dragObject()。
void QTable::swapCells ( int row1,
int col1, int row2,
int col2 ) [virtual
slot]
交换在row1、col1处的单元格和在row2、col2处的单元格的内容。
当对表格排序时,本函数也被调用。
如果不使用QTableItem,同时也想使用户可以交换单元格,那么你需要重写本函数。(参见关于大表格的注意事项。)
也参见swapColumns()和swapRows()。
void QTable::swapColumns ( int col1,
int col2, bool swapHeader = FALSE
) [virtual slot]
交换列col1与列col2。
本函数用于交换两列的位置。当用户改变列顺序(参见setColumnMovingEnabled())和对列排序的时候被调用。
如果不使用QTableItem,同时也想使用户可以交换列,那么你需要重写本函数。(参见关于大表格的注意事项。)
如果swapHeader为TRUE,列标题的内容也要交换。
也参见swapCells()。
void QTable::swapRows ( int row1,
int row2, bool swapHeader = FALSE
) [virtual slot]
交换行row1与行row2的数据。
本函数用于交换两行的位置。当用户改变行顺序(参见setRowMovingEnabled())和对行排序的时候被调用。
如果不使用QTableItem,同时也想使用户可以交换行,那么你需要重写本函数。(参见关于大表格的注意事项。)
如果swapHeader为TRUE,行标题的内容也要交换。
也参见swapColumns()和swapCells()。
void QTable::takeItem ( QTableItem * i
) [virtual]
把表项i拿出表格。本函数并不删除该表项。你必须要么自己删除该表项,要么把它插入一个表格里(使用setItem()),让这个表格拥有它的所有权。
使用本函数,你可以在一个表格内把表项从一个单元格移到另一个,或者在表格之间移动表项。用setItem()再插入该表项。
如果要交换两个单元格,使用swapCells()。
QString QTable::text ( int row,
int col )
const [virtual]
返回在row、col处的单元格中的文本,或者空字符串,如果相应的表项不存在或者没有文本。
在QDataTable处被重新实现。
void QTable::updateCell ( int row,
int col )
重绘在row、col处的单元格。
void QTable::valueChanged ( int row,
int col ) [signal]
当用户改变在row、col处的单元格的值时,本信号被发送。
QHeader * QTable::verticalHeader () const
返回表格的左QHeader。
该标题含有行号。
也参见horizontalHeader()、setLeftMargin()和QHeader。
属性文档
bool columnMovingEnabled
本属性决定用户是否可以移动列。
缺省为FALSE。
也参见rowMovingEnabled。
用setColumnMovingEnabled()设置本属性值,用columnMovingEnabled()得到本属性值。
FocusStyle focusStyle
本属性决定当前(焦点)单元格如何绘制。
缺省风格为SpreadSheet。
用setFocusStyle()设置本属性值,用focusStyle()得到本属性值。
int numCols
本属性决定表格中列的数目。
用setNumCols()设置本属性值,用numCols()得到本属性值。
也参见numRows。
int numRows
本属性决定表格中行的数目。
用setNumRows()设置本属性值,用numRows()得到本属性值。
也参见numCols。
bool readOnly
本属性决定表格是否是只读的。
表格的某个单元格是可编辑还是只读,取决于该单元格的EditType和这个设置:参见QTableItem::EditType。
也参见QWidget::enabled、setColumnReadOnly()和setRowReadOnly()。
用setReadOnly()设置本属性值,用isReadOnly()得到本属性值。
bool rowMovingEnabled
本属性决定用户是否可以移动行。
缺省为FALSE。
用setRowMovingEnabled()设置本属性值,用rowMovingEnabled()得到本属性值。
SelectionMode selectionMode
本属性决定当前选中模式。
缺省模式为Multi,即允许用户选中多重区域的单元格。
也参见SelectionMode和selectionMode。
用setSelectionMode()设置本属性值,用selectionMode()得到本属性值。
bool showGrid
本属性决定表格栅格是否显示。
缺省为显示栅格。
用setShowGrid()设置本属性值,用showGrid()得到本属性值。
bool sorting
本属性决定点击列标题是否对该列排序。
用setSorting()设置本属性值,用sorting()得到本属性值。
也参见sortColumn()。

加载中…