📄 qtableview.cpp
字号:
{ Q_D(const QTableView); return d->horizontalHeader->sectionViewportPosition(column);}/*! Returns the column in which the given x-coordinate, \a x, in contents coordinates is located. \sa rowAt()*/int QTableView::columnAt(int x) const{ Q_D(const QTableView); return d->horizontalHeader->logicalIndexAt(x);}/*! \since 4.1 Sets the width of the given \a column to be \a width.*/void QTableView::setColumnWidth(int column, int width){ Q_D(const QTableView); d->horizontalHeader->resizeSection(column, width);}/*! Returns the width of the given \a column. \sa resizeColumnToContents(), rowHeight()*/int QTableView::columnWidth(int column) const{ Q_D(const QTableView); return d->horizontalHeader->sectionSize(column);}/*! Returns true if the given \a row is hidden; otherwise returns false. \sa isColumnHidden()*/bool QTableView::isRowHidden(int row) const{ Q_D(const QTableView); return d->verticalHeader->isSectionHidden(row);}/*! If \a hide is true \a row will be hidden, otherwise it will be shown. \sa setColumnHidden()*/void QTableView::setRowHidden(int row, bool hide){ Q_D(QTableView); if (row < 0 || row >= d->verticalHeader->count()) return; d->verticalHeader->setSectionHidden(row, hide);}/*! Returns true if the given \a column is hidden; otherwise returns false. \sa isRowHidden()*/bool QTableView::isColumnHidden(int column) const{ Q_D(const QTableView); return d->horizontalHeader->isSectionHidden(column);}/*! If \a hide is true the given \a column will be hidden; otherwise it will be shown. \sa setRowHidden()*/void QTableView::setColumnHidden(int column, bool hide){ Q_D(QTableView); if (column < 0 || column >= d->horizontalHeader->count()) return; d->horizontalHeader->setSectionHidden(column, hide);}/*! \since 4.2 \property QTableView::sortingEnabled \brief whether sorting is enabled If this property is true, sorting is enabled for the table; if the property is false, sorting is not enabled. The default value is false. \sa sortByColumn()*/void QTableView::setSortingEnabled(bool enable){ Q_D(QTableView); d->sortingEnabled = enable; horizontalHeader()->setSortIndicatorShown(enable); if (enable) { disconnect(d->horizontalHeader, SIGNAL(sectionEntered(int)), this, SLOT(_q_selectColumn(int))); disconnect(horizontalHeader(), SIGNAL(sectionPressed(int)), this, SLOT(selectColumn(int))); connect(horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(sortByColumn(int))); sortByColumn(horizontalHeader()->sortIndicatorSection()); } else { connect(d->horizontalHeader, SIGNAL(sectionEntered(int)), this, SLOT(_q_selectColumn(int))); connect(horizontalHeader(), SIGNAL(sectionPressed(int)), this, SLOT(selectColumn(int))); disconnect(horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(sortByColumn(int))); }}bool QTableView::isSortingEnabled() const{ Q_D(const QTableView); return d->sortingEnabled;}/*! \property QTableView::showGrid \brief whether the grid is shown If this property is true a grid is drawn for the table; if the property is false, no grid is drawn. The default value is true.*/bool QTableView::showGrid() const{ Q_D(const QTableView); return d->showGrid;}void QTableView::setShowGrid(bool show){ Q_D(QTableView); if (d->showGrid != show) { d->showGrid = show; d->viewport->update(); }}/*! \property QTableView::gridStyle \brief the pen style used to draw the grid. This property holds the style used when drawing the grid (see \l{showGrid}).*/Qt::PenStyle QTableView::gridStyle() const{ Q_D(const QTableView); return d->gridStyle;}void QTableView::setGridStyle(Qt::PenStyle style){ Q_D(QTableView); if (d->gridStyle != style) { d->gridStyle = style; d->viewport->update(); }}/*! \property QTableView::wordWrap \brief the item text word-wrapping policy \since 4.3 If this property is true then the item text is wrapped where necessary at word-breaks; otherwise it is not wrapped at all. This property is true by default.*/void QTableView::setWordWrap(bool on){ Q_D(QTableView); if (d->wrapItemText == on) return; d->wrapItemText = on; QMetaObject::invokeMethod(d->verticalHeader, "resizeSections"); QMetaObject::invokeMethod(d->horizontalHeader, "resizeSections");}bool QTableView::wordWrap() const{ Q_D(const QTableView); return d->wrapItemText;}/*! \property QTableView::cornerButtonEnabled \brief whether the button in the top-left corner is enabled \since 4.3 If this property is true then button in the top-left corner of the table view is enabled. Clicking on this button will select all the cells in the table view. This property is true by default.*/void QTableView::setCornerButtonEnabled(bool enable){ Q_D(QTableView); d->cornerWidget->setEnabled(enable);}bool QTableView::isCornerButtonEnabled() const{ Q_D(const QTableView); return d->cornerWidget->isEnabled();}/*! \internal Returns the rectangle on the viewport occupied by the given \a index. If the index is hidden in the view it will return a null QRect.*/QRect QTableView::visualRect(const QModelIndex &index) const{ Q_D(const QTableView); if (!d->isIndexValid(index) || index.parent() != d->root || isIndexHidden(index) ) return QRect(); d->executePostedLayout(); if (d->hasSpans()) { QTableViewPrivate::Span span = d->span(index.row(), index.column()); return d->visualSpanRect(span); } int rowp = rowViewportPosition(index.row()); int rowh = rowHeight(index.row()); int colp = columnViewportPosition(index.column()); int colw = columnWidth(index.column()); const int i = showGrid() ? 1 : 0; return QRect(colp, rowp, colw - i, rowh - i);}/*! \internal Makes sure that the given \a item is visible in the table view, scrolling if necessary.*/void QTableView::scrollTo(const QModelIndex &index, ScrollHint hint){ Q_D(QTableView); // check if we really need to do anything if (!d->isIndexValid(index) || (d->model->parent(index) != d->root) || isIndexHidden(index)) return; QTableViewPrivate::Span span; if (d->hasSpans()) span = d->span(index.row(), index.column()); // Adjust horizontal position int viewportWidth = d->viewport->width(); int horizontalOffset = d->horizontalHeader->offset(); int horizontalPosition = d->horizontalHeader->sectionPosition(index.column()); int horizontalIndex = d->horizontalHeader->visualIndex(index.column()); int cellWidth = d->hasSpans() ? d->columnSpanWidth(index.column(), span.width()) : d->horizontalHeader->sectionSize(index.column()); if (horizontalScrollMode() == QAbstractItemView::ScrollPerItem) { bool positionAtLeft = (horizontalPosition - horizontalOffset < 0); bool positionAtRight = (horizontalPosition - horizontalOffset + cellWidth > viewportWidth); if (hint == PositionAtCenter || positionAtRight) { int w = (hint == PositionAtCenter ? viewportWidth / 2 : viewportWidth); int x = cellWidth; while (horizontalIndex > 0) { x += columnWidth(d->horizontalHeader->logicalIndex(horizontalIndex-1)); if (x > w) break; --horizontalIndex; } } if (positionAtRight || hint == PositionAtCenter || positionAtLeft) { int hiddenSections = 0; if (d->horizontalHeader->sectionsHidden()) { for (int s = horizontalIndex; s >= 0; --s) { int column = d->horizontalHeader->logicalIndex(s); if (d->horizontalHeader->isSectionHidden(column)) ++hiddenSections; } } horizontalScrollBar()->setValue(horizontalIndex - hiddenSections); } } else { // ScrollPerPixel if (hint == PositionAtCenter) { horizontalScrollBar()->setValue(horizontalPosition - ((viewportWidth - cellWidth) / 2)); } else { if (horizontalPosition - horizontalOffset < 0 || cellWidth > viewportWidth) horizontalScrollBar()->setValue(horizontalPosition); else if (horizontalPosition - horizontalOffset + cellWidth > viewportWidth) horizontalScrollBar()->setValue(horizontalPosition - viewportWidth + cellWidth); } } // Adjust vertical position int viewportHeight = d->viewport->height(); int verticalOffset = d->verticalHeader->offset(); int verticalPosition = d->verticalHeader->sectionPosition(index.row()); int verticalIndex = d->verticalHeader->visualIndex(index.row()); int cellHeight = d->hasSpans() ? d->rowSpanHeight(index.row(), span.height()) : d->verticalHeader->sectionSize(index.row()); if (verticalPosition - verticalOffset < 0 || cellHeight > viewportHeight) { if (hint == EnsureVisible) hint = PositionAtTop; } else if (verticalPosition - verticalOffset + cellHeight > viewportHeight) { if (hint == EnsureVisible) hint = PositionAtBottom; } if (verticalScrollMode() == QAbstractItemView::ScrollPerItem) { if (hint == PositionAtBottom || hint == PositionAtCenter) { int h = (hint == PositionAtCenter ? viewportHeight / 2 : viewportHeight); int y = cellHeight; while (verticalIndex > 0) { int row = d->verticalHeader->logicalIndex(verticalIndex - 1); y += d->verticalHeader->sectionSize(row); if (y > h) break; --verticalIndex; } } if (hint == PositionAtBottom || hint == PositionAtCenter || hint == PositionAtTop) { int hiddenSections = 0; if (d->verticalHeader->sectionsHidden()) { for (int s = verticalIndex; s >= 0; --s) { int row = d->verticalHeader->logicalIndex(s); if (d->verticalHeader->isSectionHidden(row)) ++hiddenSections; } } verticalScrollBar()->setValue(verticalIndex - hiddenSections); } } else { // ScrollPerPixel if (hint == PositionAtTop) { verticalScrollBar()->setValue(verticalPosition); } else if (hint == PositionAtBottom) { verticalScrollBar()->setValue(verticalPosition - viewportHeight + cellHeight); } else if (hint == PositionAtCenter) { verticalScrollBar()->setValue(verticalPosition - ((viewportHeight - cellHeight) / 2)); } } d->setDirtyRegion(visualRect(index));}/*! This slot is called to change the height of the given \a row. The old height is specified by \a oldHeight, and the new height by \a newHeight. \sa columnRes
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -