QHeader类

Qt 3.0.5

主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QHeader类参考

QHeader类为诸如表格和列表(listview)等提供标题行或者列。 详见……

#include <qheader.h>

继承了QWidget

所有成员函数的列表。

公共成员

公共槽

信号

  • void clicked ( int section )
  • void pressed ( int section )
  • void released ( int section )
  • void sizeChange ( int section, int oldSize, int newSize )
  • void indexChange ( int section, int fromIndex, int toIndex )
  • void sectionClicked ( int index )  (obsolete)
  • void moved ( int fromIndex, int toIndex )  (obsolete)

属性

  • int count - 标题中的节(section)数 (read only)
  • bool moving - 标题节是否可以被移动
  • int offset - 标题最左(或者最上)可见的象素
  • Orientation orientation - 标题的物理朝向
  • bool stretching - 标题的节是否总是占据标题的全部宽度(或者高度)
  • bool tracking - 信号sizeChange()是否被连续发送

保护成员

  • QRect sRect ( int index )
  • virtual void paintSection ( QPainter * p, int index, const QRect & fr )
  • virtual void paintSectionLabel ( QPainter * p, int index, const QRect & fr )

详细描述

QHeader类为诸如表格和列表(listview)等提供标题行或者列。

本类提供一个标题,例如一个垂直标题显示行标签,或者一个水平标题显示列标签。它可以用于诸如QTableQListView中。

标题由一个或者很多节组成,每个节都可以显示一个文本标签和一个图标(iconset)。使用setSortIndicator(),还可以显示排序指示器(箭头)。

使用addLabel()添加节,使用removeLabel()删去节。标签和图标在addLabel()中设置,以后可以用setLabel()来修改。使用count()以得到标题中节的数目。

标题的朝向用setOrientation()来设置。如果setStretchEnabled()为TRUE,节将会占据标题的全部宽度(对于垂直标题则是全部高度)。如果setResizeEnabled()为TRUE,用户可以手动调整节的大小。调用adjustHeaderSize(),可以调整节的大小,占据全部宽度(或者高度)。

可以使用moveSection()以移动节。如果setMovingEnabled()为TRUE,用户可以把节拖来拖去。如果某个节被移动,节被添加(使用addLabel())时的索引位置就可能与移动之后不同了。实际上你不必担心这一点,因为QHeader的API是使用节的编号(section number)的术语来工作的,某特定的节被移到哪里并没有关系。

如果你想得到一个节的当前索引位置,可以以节编号为参数调用mapToIndex()。(这个节编号是由生成该节的addLabel()调用所返回的数值。)如果你想得到一个具体索引位置的节的编号,可以以索引位置为参数调用mapToSection()。

下面是阐明mapToSection()和mapToIndex()的例子:

索引位置
0 1 2 3
原来的节次序
Sect 0 Sect 1 Sect 2 Sect 3
用户移动一个节之后的次序
Sect 0 Sect 2 Sect 3 Sect 1

k mapToSection(k) mapToIndex(k)
0 0 0
1 2 3
2 3 1
3 1 2

在上面的例子中,如果我们要找出哪个节在索引位置3,可以调用mapToSection(3),就会得到节编号为1,因为节1被移动到了那里。类似地,如果我们要知道节2占据了哪个索引位置,调用mapToIndex(2),就会得到索引为1。

QHeader提供了clicked()、pressed()和released()信号。如果用户改变了某个节的大小,sizeChange()信号被发送。如果你希望sizeChange()信号在用户调整大小时持续被发送(而不是只在调整后),使用setTracking()。如果用户移动了节,indexChange()信号被发送。

也参见QListViewQTable高级部件


成员函数文档

QHeader::QHeader ( QWidget * parent = 0, const char * name = 0 )

构造一个水平标题,命名为name,父部件为parent

QHeader::QHeader ( int n, QWidget * parent = 0, const char * name = 0 )

构造一个水平标题,命名为name,由n节组成,父部件为parent

QHeader::~QHeader ()

销毁标题及其节。

int QHeader::addLabel ( const QString & s, int size = -1 )

增加一个新节,标签文本为s。返回节所加在的索引位置(对于水平标题是在右边,对于垂直标题是在下边)。节的宽度设置为size。若size < 0,则根据文本s来选择合适的大小。

int QHeader::addLabel ( const QIconSet & iconset, const QString & s, int size = -1 )

这是重载的成员函数,为便利而提供。其行为本质上类似上一个函数。

增加一个带有图标iconset和标签文本s的新节。返回节所加在的索引位置(对于水平标题是在右边,对于垂直标题是在下边)。节的宽度设置为size。若size < 0,则根据文本来选择合适的大小。

void QHeader::adjustHeaderSize ()

调整节的大小,以尽可能全部占据标题的大小。只有isStretchEnabled()为TRUE的那些节会被调整大小。

int QHeader::cellAt ( int pos ) const

本函数已经废弃。为支持旧代码运行而提供,强烈建议新代码中不要使用。

使用sectionAt()来代替本函数。

Returns the index at which the section is displayed, which contains pos in widget coordinates, or -1 if pos is outside the header sections.

int QHeader::cellPos ( int i ) const

本函数已经废弃。为支持旧代码运行而提供,强烈建议新代码中不要使用。

使用sectionPos()来代替本函数。

Returns the position in pixels of the section that is displayed at the index i。 The position is measured from the start of the header.

int QHeader::cellSize ( int i ) const

本函数已经废弃。为支持旧代码运行而提供,强烈建议新代码中不要使用。

使用sectionSize()来代替本函数。

Returns the size in pixels of the section that is displayed at the index i

void QHeader::clicked ( int section ) [信号]

如果isClickEnabled()为TRUE,当用户点击节section时,本信号被发送。

也参见pressed()和released()。

int QHeader::count () const

返回标题中的节的数目。详见"count"属性。

int QHeader::headerWidth () const

返回所有标题列的总宽度。

QIconSet * QHeader::iconSet ( int section ) const

返回节section的图标。如果该节不存在,返回0。

void QHeader::indexChange ( int section, int fromIndex, int toIndex ) [信号]

当用户把节section从索引位置fromIndex移到索引位置toIndex时,本信号被发送。

bool QHeader::isClickEnabled ( int section = -1 ) const

如果节section为可点击,返回TRUE;否则返回FALSE。

section超出范围时(为负或者大于count() - 1),如果所有节都是可点击,返回TRUE,否则返回FALSE。

也参见setClickEnabled()。

bool QHeader::isMovingEnabled () const

如果标题节可以被移动,返回TRUE;否则返回FALSE。详见"moving"属性。

bool QHeader::isResizeEnabled ( int section = -1 ) const

如果节section为可调整大小,返回TRUE;否则返回FALSE。

如果section为-1,本函数应用于所有节,也就是说,如果所有节都是可调整大小的,返回TRUE;否则返回FALSE。

也参见setResizeEnabled()。

bool QHeader::isStretchEnabled () const

如果标题节总是占据标题的全部宽度(或者高度),返回TRUE;否则返回FALSE。 详见"stretching"属性。

bool QHeader::isStretchEnabled ( int section ) const

如果节section可以调整大小以占据标题的全部宽度(或者高度),返回TRUE;否则返回FALSE。如果至少一个节是可伸缩的,节就总是占据标题的全部宽度。

也参见setStretchEnabled()。

QString QHeader::label ( int section ) const

返回节section的文本。如果该节不存在,返回空字符串。

int QHeader::mapToActual ( int l ) const

本函数已经废弃。为支持旧代码运行而提供,强烈建议新代码中不要使用。

使用mapToIndex()来代替本函数。

Translates from logical index l to actual index (index at which the section l is displayed) . Returns -1 if l is outside the legal range.

也参见mapToLogical()。

int QHeader::mapToIndex ( int section ) const

返回节section当前被显示的索引。

更多解释参见mapTo例子

int QHeader::mapToLogical ( int a ) const

本函数已经废弃。为支持旧代码运行而提供,强烈建议新代码中不要使用。

使用mapToSection()来代替本函数。

Translates from actual index a (index at which the section is displayed) to logical index of the section. Returns -1 if a is outside the legal range.

也参见mapToActual()。

int QHeader::mapToSection ( int index ) const

返回显示于索引位置index的节。

更多解释参见mapTo例子

void QHeader::moveCell ( int fromIdx, int toIdx ) [虚]

本函数已经废弃。为支持旧代码运行而提供,强烈建议新代码中不要使用。

使用moveSection()来代替本函数。

Moves the section that is currently displayed at index fromIdx to index toIdx

void QHeader::moveSection ( int section, int toIndex )

把节section移到索引位置toIndex

void QHeader::moved ( int fromIndex, int toIndex ) [信号]

本函数已经废弃。为支持旧代码运行而提供,强烈建议新代码中不要使用。

使用indexChange()来代替本函数。

This signal is emitted when the user has moved the section which is displayed at the index fromIndex to the index toIndex

int QHeader::offset () const

返回标题的最左(或者最上)的可见象素。 详见"offset"属性。

Orientation QHeader::orientation () const

返回标题的物理朝向。 详见"orientation"属性。

void QHeader::paintSection ( QPainter * p, int index, const QRect & fr ) [虚 保护]

在矩形fr内(使用部件坐标),使用画具p绘制在位置index的节。

调用了paintSectionLabel()。

void QHeader::paintSectionLabel ( QPainter * p, int index, const QRect & fr ) [虚 保护]

在矩形fr内(使用部件坐标),使用画具p绘制在位置index的节的标签。

paintSection()所调用。

void QHeader::pressed ( int section ) [信号]

当用户按下节section时,本信号被发送。

也参见released()。

void QHeader::released ( int section ) [信号]

当用户释放节section时,本信号被发送。

也参见pressed()。

void QHeader::removeLabel ( int section )

删去节section。如果该节不存在,什么也不做。

void QHeader::resizeSection ( int section, int s )

调整节section的大小为s象素宽(或者高)。

QRect QHeader::sRect ( int index ) [protected]

返回被索引为index的节所覆盖的矩形。

int QHeader::sectionAt ( int pos ) const

返回包括以象素给出的位置pos的节索引。

也参见offset

void QHeader::sectionClicked ( int index ) [信号]

本函数已经废弃。为支持旧代码运行而提供,强烈建议新代码中不要使用。

使用clicked()来代替本函数。

This signal is emitted when a part of the header is clicked. index is the index at which the section is displayed.

In a list view this signal would typically be connected to a slot that sorts the specified column (or row)。

int QHeader::sectionPos ( int section ) const

返回节section开始的位置(以象素形式)。

也参见offset

QRect QHeader::sectionRect ( int section ) const

返回被节section所覆盖的矩形。

int QHeader::sectionSize ( int section ) const

以象素形式返回节section的宽度(或者高度)。

void QHeader::setCellSize ( int section, int s ) [虚]

本函数已经废弃。为支持旧代码运行而提供,强烈建议新代码中不要使用。

使用resizeSection()来代替本函数。

Sets the size of the section section to s pixels.

警告: does not repaint or send out signals。

void QHeader::setClickEnabled ( bool enable, int section = -1 ) [虚]

如果enable为TRUE,点击节section就会导致clicked()信号被发送;否则节将忽略点击。

如果section为-1(缺省),那么enable值对所有存在的节都设置,而且也应用到增加的新节上。

也参见movingsetResizeEnabled()。

void QHeader::setLabel ( int section, const QString & s, int size = -1 ) [虚]

设置节section的文本为s。如果size >= 0,节的宽度设置为size;否则不变。该节已经设置的图标保持不变。

如果该节不存在,什么也不做。

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

void QHeader::setLabel ( int section, const QIconSet & iconset, const QString & s, int size = -1 ) [虚]

这是重载的成员函数,为便利而提供。其行为本质上类似上一个函数。

把节section的图标设置为iconset,文本设置为s。如果size >= 0,节的宽度设置为size;否则不变。

如果该节不存在,什么也不做。

void QHeader::setMovingEnabled ( bool ) [虚]

设置标题的节是否可以移动。详见"moving"属性。

void QHeader::setOffset ( int pos ) [虚 槽]

设置标题的最左(或者最上)的可见象素为pos。详见"offset"属性。

void QHeader::setOrientation ( Orientation ) [虚]

设置标题的物理朝向。详见"orientation"属性。

void QHeader::setResizeEnabled ( bool enable, int section = -1 ) [虚]

如果enable为TRUE,用户可以调整节section的大小;否则该节不能被手动调整大小。

如果section为负(缺省),那么enable值对所有存在的节都设置,而且也应用到增加的新节上。 例子:

    // Allow resizing of all current and future sections
    header->setResizeEnabled(TRUE);
    // Disable resizing of section 3, (the fourth section added)
    header->setResizeEnabled(FALSE, 3);
    

如果用户调整了一个节的大小,sizeChange()信号被发送。

也参见movingsetClickEnabled()和tracking

void QHeader::setSortIndicator ( int section, bool increasing = TRUE )

因为QHeader经常与表格或者列表部件一起使用,它可以显示排序的次序。这可以通过在节的右边显示一个箭头来实现。

如果increasing为TRUE(缺省),箭头指向下;否则向上。

同一时间只能有一个节显示排序指示。如果你不想让任何节显示排序指示器,传入参数section为-1。

void QHeader::setStretchEnabled ( bool b, int section ) [虚]

如果b为TRUE,节section的大小将会随标题的大小调整而调整,以使节占据标题的全部宽度(对于垂直标题则是高度);否则,节section被设置为不可伸缩,也不会随标题的调整大小而调整大小。

section为-1时,如果b为TRUE,所有节的大小相等地随标题的大小调整而调整,以使节占据标题的全部宽度(对于垂直标题则是高度);否则,所有节都被设置为不可伸缩,也不会随标题的调整大小而调整大小。

也参见adjustHeaderSize()。

void QHeader::setStretchEnabled ( bool b )

设置标题的节是否总是占据标题的全部宽度(或者高度)为b。 详见"stretching"属性。

void QHeader::setTracking ( bool enable ) [虚]

设置sizeChange()信号是否持续被发送为enable。 详见"tracking"属性。

void QHeader::sizeChange ( int section, int oldSize, int newSize ) [信号]

当用户把节section的大小从oldSize改为newSize时,本信号被发送。典型地,本信号连接到一个槽上,这个槽重绘包括该标题的表格或者列表。

bool QHeader::tracking () const

如果sizeChange()信号是持续被发送的,返回TRUE;否则返回FALSE。 详见"tracking"属性。


属性文档

int count

本属性决定标题中的节的数目。

count()来得到本属性值。

bool moving

得到本属性值标题的节是否可以被移动。

如果本属性为TRUE,用户可以移动节。如果用户移动某个节,indexChange()信号被发送。

也参见setClickEnabled()和setResizeEnabled()。

setMovingEnabled()设置本属性值,用isMovingEnabled()得到本属性值。

int offset

本属性决定标题的最左(或者最上)的可见象素。

设置本属性将滚动标题以使得offset成为最左(或者最上,对于垂直标题)的可见象素。

setOffset()设置本属性值,用offset()得到本属性值。

Orientation orientation

本属性决定标题的物理朝向。

朝向要么是QHeader::Vertical,要么就是QHeader::Horizontal(缺省)。

如果你没有提供大小参数,就要在添加标签之前调用setOrientation(),否则大小会不正确。

setOrientation()设置本属性值,用orientation()得到本属性值。

bool stretching

本属性决定标题的节是否总是占据标题的全部宽度(或者高度)。

setStretchEnabled()设置本属性值,用isStretchEnabled()得到本属性值。

bool tracking

本属性决定sizeChange()信号是否持续地被发送。

如果tracking为打开,当鼠标移动(也就是标题被调整大小)时,sizeChange()信号持续地被发送;否则,只有在大小调整结束鼠标按键释放时,才发送信号。

Tracking缺省为FALSE。

setTracking()设置本属性值,用tracking()得到本属性值。


Copyright © 2002 Trolltech Trademarks 译者:farfareast
Qt 3.0.5版