📄 qtable.html
字号:
<p>QTable支持多重选中区域。你可以使用<a href="#addSelection">addSelection</a>()来在编程中选择单元格。选中区域的个数由<a href="#numSelections">numSelections</a>()给出。当前选中区域由<a href="#currentSelection">currentSelection</a>()返回。可以使用<a href="#removeSelection">removeSelection</a>()来删去一个选中区域,和<a href="#clearSelection">clearSelection</a>()来删去所有的选中区域。选中区域是<a href="qtableselection.html">QTableSelection</a>对象。<p> <a name="signals"></a><h3>信号</h3><a name="1-4"></a><p>当用户点击一个单元格时,信号<a href="#currentChanged">currentChanged</a>()被发送。你也可以连接到低层次的信号<a href="#clicked">clicked</a>()、<a href="#doubleClicked">doubleClicked</a>()和<a href="#pressed">pressed</a>()上。如果用户改变了选中区域,信号<a href="#selectionChanged">selectionChanged</a>()被发送;类似地,单元格值改变将发送<a href="#valueChanged">valueChanged</a>()信号。如果右键单击(或者按下平台特定的键序列),信号<a href="#contextMenuRequested">contextMenuRequested</a>()被发送。如果用户放置了一个拖动或者一个对象,信号<a href="#dropped">dropped</a>()与放置事件(drop event)一起被发送。<p>也参见<a href="advanced.html">高级部件</a>。<hr><h2>成员类型文档</h2><h3 class=fn><a name="EditMode-enum"></a>QTable::EditMode</h3> <ul><li><tt>QTable::NotEditing</tt> - 当前没有被编辑的单元格。<li><tt>QTable::Editing</tt> - 当前有一个单元格被编辑。编辑器使用单元格的原内容为初始值。<li><tt>QTable::Replacing</tt> - 当前有一个单元格被编辑。编辑器没有使用单元格的原内容为初始值。</ul><h3 class=fn><a name="FocusStyle-enum"></a>QTable::FocusStyle</h3> <p>指明当前单元格(焦点所在)如何被绘制。<ul><li><tt>QTable::FollowStyle</tt> - 当前单元格按照当前的风格(style)被绘制,而且如果当前单元格在选中区域内,其背景也绘制为选中。<li><tt>QTable::SpreadSheet</tt> - 当前单元格按照在电子表格里被绘制。这意味着,单元格由包围它的一个黑色矩形所指示出来,而且其背景也总是使用部件的底色——即使被选中。</ul><p> <h3 class=fn><a name="SelectionMode-enum"></a>QTable::SelectionMode</h3> <ul><li><tt>QTable::NoSelection</tt> - 用户不能选中单元格。<li><tt>QTable::Single</tt> - 用户只能选中一个单一区域的单元格。<li><tt>QTable::Multi</tt> - 用户可以选中多重区域的单元格。<li><tt>QTable::SingleRow</tt> - 用户一次选中一行(总是当前表项所在的那一行)。<li><tt>QTable::MultiRow</tt> - 用户可以选中多行。</ul><hr><h2>成员函数文档</h2><h3 class=fn><a name="QTable"></a>QTable::QTable ( <a href="qwidget.html">QWidget</a> * parent = 0, const char * name = 0 )</h3>生成一个空表格对象,命名为<em>name</em>,作为<em>parent</em>的子部件。<p>如果使用QTableItem,在填充表格前要调用<a href="#setNumRows">setNumRows</a>()和<a href="#setNumCols">setNumCols</a>()以设置表格尺寸。<p> <p>也参见<a href="qwidget.html#clearWFlags">QWidget::clearWFlags</a>()和<a href="qt.html#WidgetFlags-enum">Qt::WidgetFlags</a>。<h3 class=fn><a name="QTable-2"></a>QTable::QTable ( int numRows, int numCols, <a href="qwidget.html">QWidget</a> * parent = 0, const char * name = 0 )</h3>构造空表格,命名为<em>name</em>,行数为<em>numRows</em>,列数为<em>numCols</em>,是<em>parent</em>的子部件。<p>如果使用<a href="qtableitem.html">QTableItem</a>填充表格,可以生成<a href="qtableitem.html">QTableItem</a>、<a href="qcombotableitem.html">QComboTableItem</a>和<a href="qchecktableitem.html">QCheckTableItem</a>表项并且使用<a href="#setItem">setItem</a>()插入到表格中。(使用QTableItem的另外一种方法可参见<a href="qtable.html#notes-on-large-tables">关于大表格的注意事项</a>。)<p> <p>也参见<a href="qwidget.html#clearWFlags">QWidget::clearWFlags</a>()和<a href="qt.html#WidgetFlags-enum">Qt::WidgetFlags</a>。<h3 class=fn><a name="~QTable"></a>QTable::~QTable ()</h3>解构器(Destructor)。删除QTable对象使用的所有资源,包括所有的QTableItem及其部件。<h3 class=fn>void <a name="activateNextCell"></a>QTable::activateNextCell ()<tt> [virtual protected]</tt></h3>用来在内嵌编辑使用回车键完成后,激活下一个单元格。<p>缺省行为是由上到下,也就是说,移到当前编辑单元格的下方的单元格。如果需要不同的响应行为,例如由左至右,需要重写这个函数。<h3 class=fn>int <a name="addSelection"></a>QTable::addSelection ( const <a href="qtableselection.html">QTableSelection</a> & s )<tt> [virtual]</tt></h3>给表格增加一个由<em>s</em>所描述的选中区域,返回其个数,在选中区域非法时返回-1。<p>切记调用<a href="qtableselection.html#init">QTableSelection::init</a>()和<a href="qtableselection.html#expandTo">QTableSelection::expandTo</a>()以使得选中区域合法(也参见<a href="qtableselection.html#isActive">QTableSelection::isActive</a>())。<p> <p>也参见<a href="#numSelections">numSelections</a>()、<a href="#removeSelection">removeSelection</a>()和<a href="#clearSelection">clearSelection</a>()。<h3 class=fn>void <a name="adjustColumn"></a>QTable::adjustColumn ( int col )<tt> [virtual slot]</tt></h3>调整<em>col</em>列的大小,以使得列宽足以显示该列最宽的表项。<p> <p>也参见<a href="#adjustRow">adjustRow</a>()。<p>已在<a href="qdatatable.html#adjustColumn">QDataTable</a>中重新实现。<h3 class=fn>void <a name="adjustRow"></a>QTable::adjustRow ( int row )<tt> [virtual slot]</tt></h3>调整<em>row</em>行的大小,以使得行高足以显示该行最高的表项。<p> <p>也参见<a href="#adjustColumn">adjustColumn</a>()。<h3 class=fn><a href="qwidget.html">QWidget</a> * <a name="beginEdit"></a>QTable::beginEdit ( int row, int col, bool replace )<tt> [virtual protected]</tt></h3>用来启动在<em>row</em>、<em>col</em>的单元格的编辑器。通过生成一个编辑器(调用<a href="#createEditor">createEditor</a>())和使用<a href="#setCellWidget">setCellWidget</a>()把单元格的编辑器设置为新生成的编辑器,实现编辑过程。(编辑完成后,调用<a href="#endEdit">endEdit</a>()以把单元格内容替换为编辑器的结果。)如果<em>replace</em>为TRUE,编辑器会以单元格内容(如果有的话)为初始值,也就是说,用户来修改原来单元格的内容;否则,用户将输入新的数据。<p> <p>也参见<a href="#endEdit">endEdit</a>()。<h3 class=fn><a href="qrect.html">QRect</a> <a name="cellGeometry"></a>QTable::cellGeometry ( int row, int col ) const<tt> [virtual]</tt></h3>以内容坐标(content coordinates)返回在<em>row</em>、<em>col</em>的单元格的范围矩形(bounding rectangle)。<h3 class=fn><a href="qrect.html">QRect</a> <a name="cellRect"></a>QTable::cellRect ( int row, int col ) const<tt> [virtual]</tt></h3>返回在单元格坐标系统中<em>row</em>、<em>col</em>单元格的几何结构(geometry)。在<a href="#paintCell">paintCell</a>()时使用方便。等价于<a href="qrect.html">QRect</a>( <a href="qpoint.html">QPoint</a>(0,0)、<a href="#cellGeometry">cellGeometry</a>( row, col)。<a href="qwidget.html#size">size</a>() );<p> <p>也参见<a href="#cellGeometry">cellGeometry</a>()。<p>例子:<a href="tutorial2-08.html#x2515">chart/setdataform.cpp</a>。<h3 class=fn><a href="qwidget.html">QWidget</a> * <a name="cellWidget"></a>QTable::cellWidget ( int row, int col ) const<tt> [virtual]</tt></h3>返回在<em>row</em>、<em>col</em>的单元格中所设置的部件,如果未设置则返回0。<p>如果不使用QTableItem,需要重写本函数:参见<a href="qtable.html#notes-on-large-tables">关于大表格的注意事项</a>。<p> <p>也参见<a href="#clearCellWidget">clearCellWidget</a>()和<a href="#setCellWidget">setCellWidget</a>()。<p>例子:<a href="tutorial2-08.html#x2516">chart/setdataform.cpp</a>。<h3 class=fn>void <a name="clearCell"></a>QTable::clearCell ( int row, int col )<tt> [virtual]</tt></h3>删去在<em>row</em>、<em>col</em>的<a href="qtableitem.html">QTableItem</a>。<p>如果不使用QTableItem,需要重写本函数:参见<a href="qtable.html#notes-on-large-tables">关于大表格的注意事项</a>。<h3 class=fn>void <a name="clearCellWidget"></a>QTable::clearCellWidget ( int row, int col )<tt> [virtual]</tt></h3>删去在<em>row</em>、<em>col</em>的单元格中所设置的部件(如果有的话)。<p>如果不使用QTableItem,需要重写本函数:参见<a href="qtable.html#notes-on-large-tables">关于大表格的注意事项</a>。<p>本函数删去在<em>row</em>、<em>col</em>坐标的部件。注意:部件不是立即被删去,而是对部件调用<a href="qobject.html#deleteLater">QObject::deleteLater</a>()以避免时序问题。<p> <p>也参见<a href="#cellWidget">cellWidget</a>()和<a href="#setCellWidget">setCellWidget</a>()。<h3 class=fn>void <a name="clearSelection"></a>QTable::clearSelection ( bool repaint = TRUE )<tt> [slot]</tt></h3>清除所有选中区域,如果<em>repaint</em>为TRUE则重绘适当的区域。<p> <p>也参见<a href="#removeSelection">removeSelection</a>()。<h3 class=fn>void <a name="clicked"></a>QTable::clicked ( int row, int col, int button, const <a href="qpoint.html">QPoint</a> & mousePos )<tt> [signal]</tt></h3> <p>当鼠标按键<em>button</em>被点击时,本信号被发送。事件发生所在的单元格在<em>row</em>、<em>col</em>,鼠标位置在<em>mousePos</em>结构里。<p>例子:<a href="tutorial2-08.html#x2517">chart/setdataform.cpp</a>。<h3 class=fn>int <a name="columnAt"></a>QTable::columnAt ( int x ) const<tt> [virtual]</tt></h3>返回在位置<em>x</em>的列的序数。<em>x</em>必须以内容坐标的形式给出。<p> <p>也参见<a href="#columnPos">columnPos</a>()和<a href="#rowAt">rowAt</a>()。<h3 class=fn>void <a name="columnClicked"></a>QTable::columnClicked ( int col )<tt> [virtual protected slot]</tt></h3>当列<em>col</em>被点击时调用。缺省的实现是如果<a href="#sorting">sorting</a>()为TRUE则对该列排序。<h3 class=fn>void <a name="columnIndexChanged"></a>QTable::columnIndexChanged ( int section, int fromIndex, int toIndex )<tt> [virtual protected slot]</tt></h3>当列的顺序将被改变时调用,也就是说,当用户从<em>fromIndex</em>到<em>toIndex</em>移动列标题<em>section</em>的时候。<p>如果要编程上改变列的顺序,可以调用<a href="#swapRows">swapRows</a>()或者<a href="#swapColumns">swapColumns</a>()。<p> <p>也参见<a href="qheader.html#indexChange">QHeader::indexChange</a>()和<a href="#rowIndexChanged">rowIndexChanged</a>()。<h3 class=fn>bool <a name="columnMovingEnabled"></a>QTable::columnMovingEnabled () const</h3><p>如果用户可以移动列,返回TRUE;否则返回FALSE。详情参见<a href="qtable.html#columnMovingEnabled-prop">"columnMovingEnabled"</a>属性。<h3 class=fn>int <a name="columnPos"></a>QTable::columnPos ( int col ) const<tt> [virtual]</tt></h3>以内容坐标的形式返回列<em>col</em>的x坐标。<p> <p>也参见<a href="#columnAt">columnAt</a>()和<a href="#rowPos">rowPos</a>()。<h3 class=fn>int <a name="columnWidth"></a>QTable::columnWidth ( int col ) const<tt> [virtual]</tt></h3>返回列<em>col</em>的宽度。<p> <p>也参见<a href="#setColumnWidth">setColumnWidth</a>()和<a href="#rowHeight">rowHeight</a>()。<h3 class=fn>void <a name="columnWidthChanged"></a>QTable::columnWidthChanged ( int col )<tt> [virtual protected slot]</tt></h3>无论何时列<em>col</em>的宽度改变,都应该调用本函数。它更新受影响的各个列的几何特性,重绘表格以反映所做的改变。<h3 class=fn>void <a name="contentsDragEnterEvent"></a>QTable::contentsDragEnterEvent ( <a href="qdragenterevent.html">QDragEnterEvent</a> * e )<tt> [virtual protected]</tt></h3>本事件处理者(event handler)当QTable对象接收到一个<a href="qdragenterevent.html">QDragEnterEvent</a> <em>e</em>时调用,也就是说,当用户按下鼠标按键以拖拉什么东西的时候。<p>焦点移到<a href="qdragenterevent.html">QDragEnterEvent</a>所发生的单元格处。<p>由<a href="qscrollview.html#contentsDragEnterEvent">QScrollView</a>处重新实现。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -