加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

QTable类参考(下)

(2016-04-17 21:36:55)
标签:

qt

it

分类: QT

QHeader QTable::horizontalHeader () const

返回表格的顶部QHeader

该标题包含列标。

要修改列标,使用QHeader::setLabel(),例如,

horizontalHeader()->setLabel( 0, tr( "File" ) );

 

也参见verticalHeader()、setTopMargin()和QHeader

例子:chart/setdataform.cpptable/small-table-demo/main.cpp

int QTable::indexOf ( int row, int col ) const [protected]

返回单一整数,它通过把二维的表格映射为一维数组来标识详细的rowcol

这很有用,例如如果你要使用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]

在内部数据结构里,在rowcol处插入部件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

如果rowcol处的单元格被选中,返回TRUE;否则返回FALSE。

 

也参见isRowSelected()和isColumnSelected()。

QTableItem QTable::item ( int row, int col ) const [virtual]

返回QTableItem,它代表着在rowcol处的单元格的内容。

如果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上绘制在rowcol处的单元格。该画具已经被转变为单元格原有的。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的背景色,填充从cxcy位置开始的,宽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]

返回为在rowcol处的单元格设置的象素映射,如果该单元格不含象素映射,返回无效象素映射(null-pixmap)。

 

也参见setPixmap()。

例子:chart/setdataform.cpp

void QTable::pressed ( int row, int col, int button, const QPoint mousePos ) [signal]

当鼠标按键button被按下时,本信号被发送。事件发生所在的单元格在rowcol,鼠标位置在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必须以内容坐标的形式给出。

 

也参见rowPos()和columnAt()。

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]

当行的顺序将被改变时调用,也就是说,当用户从fromIndextoIndex移动行标题section的时候。

如果要编程上改变行的顺序,可以调用swapRows()或者swapColumns()。

 

也参见QHeader::indexChange()和columnIndexChanged()。

bool QTable::rowMovingEnabled () const

如果用户可以移动行,返回TRUE;否则返回FALSE。详情参见"rowMovingEnabled"属性。

int QTable::rowPos ( int row ) const [virtual]

以内容坐标的形式返回行row的y坐标。

 

也参见rowAt()和columnPos()。

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]

用来以在rowcol处的单元格的编辑器的内容,替换该单元格内容。如果该单元格已经有一个QTableItem,则先被删去(参见clearCell())。

例如如果你想依编辑器的内容来生成不同的QTableItem,就需要重写本函数。

如果不需要QTableItem,你就需要重写本函数,以把用户输入数据保存到你的数据结构中。(参见关于大表格的注意事项。)

 

也参见QTableItem::setContentFromEditor()和createEditor()。

void QTable::setCellWidget ( int row, int col, QWidget e ) [virtual]

把部件e放置到在rowcol处的单元格中,并且在单元格几何特性改变时负责定位和调整大小。

缺省情况下,部件被插入到numRows()×numCols()个元素的向量中。对于很大的表格,你很可能会要把部件存储到消耗更少内存的数据结构中。(参见关于大表格的注意事项)。为了支持使用你自己的数据结构,本函数调用insertWidget()以增加部件到内部数据结构。要使用你自己的数据结构,需要重写insertWidget()、cellWidget()和clearCellWidget()。

单元格的部件是使用“new”操作符动态生成的,一旦表格被销毁,也自动被销毁。当使用setCellWidget()时,表格拥有部件的所有权。

 

例子:chart/setdataform.cpp

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

 

例子:chart/setdataform.cpp

void QTable::setColumnStretchable ( int col, bool stretch ) [virtual slot]

如果stretch为TRUE,列col被设置为可伸缩;否则被设置为不可伸缩。

如果表格部件的宽度减少或者增加,可伸缩的列将尽可能适合空间地变窄或者变宽。用户不能手动调整可伸缩的列的大小。

 

也参见isColumnStretchable()、setRowStretchable()和adjustColumn()。

void QTable::setColumnWidth ( int col, int w ) [virtual slot]

调整列colw象素宽。

 

也参见columnWidth()和setRowHeight()。

例子:chart/setdataform.cpp

Reimplemented in QDataTable

void QTable::setCurrentCell ( int row, int col ) [virtual slot]

把焦点移到在rowcol的单元格上。

 

也参见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 col,且重绘该单元格。如果该单元格已存在一个表项,删除且用item替换之。表格拥有表项的所有权。

如果不使用QTableItem,需要重写本函数:参见关于大表格的注意事项

 

也参见item()和takeItem()。

例子: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]

设置在rowcol处的单元格中的象素映射为pix

如果单元格中没有表项,则生成一个EditType为OnTypingQTableItem;否则,已存在的表项的象素映射(如果有的话)被pix所替代。

注意:QComboTableItem和QCheckTableItem不显示象素映射。

 

也参见pixmap()、setText()、setItem()和QTableItem::setPixmap()。

例子:chart/setdataform.cpptable/small-table-demo/main.cpp

void QTable::setReadOnly ( bool b ) [virtual slot]

设置表格是否只读为b。详情参见"readOnly"属性。

void QTable::setRowHeight ( int row, int h ) [virtual slot]

调整行rowh象素高。

 

也参见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]

设置在rowcol处的单元格的文本为text

如果单元格中没有表项,则生成一个EditType为OnTypingQTableItem;否则,已存在的表项的文本(如果有的话)被text所替代。

 

也参见text()、setPixmap()、setItem()和QTableItem::setText()。

例子:chart/setdataform.cpptable/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]

交换在row1col1处的单元格和在row2col2处的单元格的内容。

当对表格排序时,本函数也被调用。

如果不使用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]

返回在rowcol处的单元格中的文本,或者空字符串,如果相应的表项不存在或者没有文本。

 

也参见setText()和setPixmap()。

例子:chart/setdataform.cpp

QDataTable处被重新实现。

void QTable::updateCell ( int row, int col )

重绘在rowcol处的单元格。

 

void QTable::valueChanged ( int row, int col ) [signal]

当用户改变在rowcol处的单元格的值时,本信号被发送。

例子:chart/setdataform.cpp

QHeader QTable::verticalHeader () const

返回表格的左QHeader

该标题含有行号。

 

也参见horizontalHeader()、setLeftMargin()和QHeader


属性文档

bool columnMovingEnabled

本属性决定用户是否可以移动列。

缺省为FALSE。

 

也参见rowMovingEnabled

setColumnMovingEnabled()设置本属性值,用columnMovingEnabled()得到本属性值。

FocusStyle focusStyle

本属性决定当前(焦点)单元格如何绘制。

缺省风格为SpreadSheet

 

也参见QTable::FocusStyle

setFocusStyle()设置本属性值,用focusStyle()得到本属性值。

int numCols

本属性决定表格中列的数目。

setNumCols()设置本属性值,用numCols()得到本属性值。

 

也参见numRows

int numRows

本属性决定表格中行的数目。

setNumRows()设置本属性值,用numRows()得到本属性值。

 

也参见numCols

bool readOnly

本属性决定表格是否是只读的。

表格的某个单元格是可编辑还是只读,取决于该单元格的EditType和这个设置:参见QTableItem::EditType

 

也参见QWidget::enabledsetColumnReadOnly()和setRowReadOnly()。

setReadOnly()设置本属性值,用isReadOnly()得到本属性值。

bool rowMovingEnabled

本属性决定用户是否可以移动行。

缺省为FALSE。

 

也参见columnMovingEnabled

setRowMovingEnabled()设置本属性值,用rowMovingEnabled()得到本属性值。

SelectionMode selectionMode

本属性决定当前选中模式。

缺省模式为Multi,即允许用户选中多重区域的单元格。

 

也参见SelectionModeselectionMode

setSelectionMode()设置本属性值,用selectionMode()得到本属性值。

bool showGrid

本属性决定表格栅格是否显示。

缺省为显示栅格。

setShowGrid()设置本属性值,用showGrid()得到本属性值。

bool sorting

本属性决定点击列标题是否对该列排序。

setSorting()设置本属性值,用sorting()得到本属性值。

 

也参见sortColumn()。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有