本文整理汇总了C++中contentOffset函数的典型用法代码示例。如果您正苦于以下问题:C++ contentOffset函数的具体用法?C++ contentOffset怎么用?C++ contentOffset使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了contentOffset函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: painter
//! Activated whenever LineNumberArea Widget paint event is raised.
//! Writes the line numbers for the visible blocks.
void ModelicaEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
{
QPainter painter(mpLineNumberArea);
painter.fillRect(event->rect(), QColor(240, 240, 240));
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
while (block.isValid() && top <= event->rect().bottom())
{
if (block.isVisible() && bottom >= event->rect().top())
{
QString number = QString::number(blockNumber + 1);
// make the current highlighted line number darker
if (blockNumber == textCursor().blockNumber())
{
painter.setPen(QColor(64, 64, 64));
}
else
{
painter.setPen(Qt::gray);
}
painter.setFont(document()->defaultFont());
QFontMetrics fontMetrics (document()->defaultFont());
painter.drawText(0, top, mpLineNumberArea->width() - 5, fontMetrics.height(), Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例2: painter
void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
{
QPainter painter(lineNumberArea);
painter.fillRect(event->rect(), QWidget::palette().color(QWidget::backgroundRole()).darker(50));
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
while (block.isValid() && top <= event->rect().bottom()) {
if (block.isVisible() && bottom >= event->rect().top()) {
QString number = QString::number(blockNumber + 1);
painter.setPen(QWidget::palette().color(QWidget::foregroundRole()).darker(50));
painter.drawText(0, top, lineNumberArea->width(), fontMetrics().height(),
Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例3: painter
/*************************************************
// Function: PaintLineNumberArea
// Description: 绘制左侧行号区域
// Calls:
// Called By: CLineNumberArea::paintEvent
// Parameter: QPaintEvent *event
// Return: void
// Others: 通过CLineNumberArea类的paintEvent函数来调用本函数,
以保证能够实时更新该行数
*************************************************/
void CCodeEditor::PaintLineNumberArea(QPaintEvent *event)
{
QPainter painter(m_lineNumberArea);
painter.fillRect(event->rect(), Qt::lightGray); /*行数背景颜色*/
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber(); /*当前行(从0开始)*/
int top = (int)blockBoundingGeometry(block).translated(contentOffset()).top() + fontMetrics().descent();/*绘制区域的顶部*/
int bottom = top + (int)blockBoundingRect(block).height(); /*绘制区域的底部*/
/*绘制可见区域*/
while (block.isValid() && top <= event->rect().bottom())
{
if (block.isVisible() && bottom >= event->rect().top())
{
QString number = QString::number(blockNumber + 1);
painter.setPen(Qt::black); /*行号颜色*/
painter.drawText(0, top, m_lineNumberArea->width(), fontMetrics().height(),
Qt::AlignCenter, number);
}
block = block.next();
top = bottom;
bottom = top + (int)blockBoundingRect(block).height();
++blockNumber;
}
}
示例4: painter
void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
{
QPainter painter(lineNumberArea);
painter.fillRect(event->rect(), QColor(Qt::gray).lighter(140));
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
while (block.isValid() && top <= event->rect().bottom())
{
if (block.isVisible() && bottom >= event->rect().top())
{
int rowId = blockNumber + 1;
QString number = QString::number(rowId);
if (errorLines.indexOf(rowId)!=-1) {
painter.setPen(Qt::red);
} else if (warningLines.indexOf(rowId)!=-1) {
painter.setPen(Qt::yellow);
} else {
painter.setPen(Qt::gray);
}
painter.drawText(0, top, lineNumberArea->width(), fontMetrics().height(), Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例5: painter
void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
{
QPainter painter(lineNumberArea);
painter.fillRect(event->rect(), Qt::lightGray);
//![extraAreaPaintEvent_0]
//![extraAreaPaintEvent_1]
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
//![extraAreaPaintEvent_1]
//![extraAreaPaintEvent_2]
while (block.isValid() && top <= event->rect().bottom()) {
if (block.isVisible() && bottom >= event->rect().top()) {
QString number = QString::number(blockNumber + 1);
painter.setPen(Qt::black);
painter.drawText(0, top, lineNumberArea->width(), fontMetrics().height(),
Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例6: textCursor
void GenericCodeEditor::updateCurrentLineHighlighting()
{
int currentCursorBlock = textCursor().blockNumber();
int first_block_num = qMin(mLastCursorBlock, currentCursorBlock);
int second_block_num = qMax(mLastCursorBlock, currentCursorBlock);
QRegion region(0,0,0,0);
QTextBlock block = firstVisibleBlock();
int block_num = block.blockNumber();
qreal top = blockBoundingGeometry(block).translated(contentOffset()).top();
qreal max_top = viewport()->rect().bottom();
while (block.isValid() && block_num <= second_block_num && top <= max_top)
{
QRectF block_rect = blockBoundingRect(block);
if (block_num == first_block_num || block_num == second_block_num) {
region += block_rect.translated(0, top).toRect();
}
top += block_rect.height();
block = block.next();
++block_num;
}
viewport()->update( region );
}
示例7: painter
void BaseEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
{
QPainter painter(lineNumberArea);
painter.fillRect(event->rect(), QColor::fromRgb(0xEA,0xEA,0xEA));
painter.setFont(document()->defaultFont());
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
int height = QFontMetrics(document()->defaultFont()).height();
while(block.isValid() && top <= event->rect().bottom())
{
if (block.isVisible() && bottom >= event->rect().top())
{
QString number = QString::number(blockNumber+1);
painter.setPen(Qt::black);
painter.drawText(0, top, lineNumberArea->width(), height,
Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例8: painter
void TextEdit::gutterPaintEvent(QPaintEvent *event)
{
QPainter painter(gutter);
painter.fillRect(event->rect(), QColor(0xee, 0xee, 0xee));
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
int digiW = fontMetrics().width(QLatin1Char('9'));
while (block.isValid() && top <= event->rect().bottom()) {
if (block.isVisible() && bottom >= event->rect().top()) {
QString number = QString::number(blockNumber + 1);
painter.setPen(QColor(0x88, 0x88, 0x88));
painter.drawText(0, top, gutter->width() - digiW / 2, fontMetrics().height(),
Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例9: painter
void CodeEditorWidget::paintLines( LinesWidget* linesWidget, QPaintEvent* event )
{
QPainter painter( linesWidget );
painter.fillRect( event->rect(), Qt::lightGray );
//The lineNumberAreaPaintEvent() is called from LineNumberArea whenever it receives a paint event. We start off by painting the widget's background.
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int)blockBoundingGeometry(block).translated( contentOffset() ).top();
int bottom = top + (int)blockBoundingRect( block ).height();
// We will now loop through all visible lines and paint the line numbers in the extra area for each line.
// Notice that in a plain text edit each line will consist of one QTextBlock; though, if line wrapping is enabled, a line may span several rows in the text edit's viewport.
// We get the top and bottom y-coordinate of the first text block, and adjust these values by the height of the current text block in each iteration in the loop.
while( block.isValid() && top <= event->rect().bottom() )
{
if ( block.isVisible() && bottom >= event->rect().top() )
{
QString number = QString::number( blockNumber + 1 );
painter.setPen( Qt::black );
painter.drawText( 0, top, linesWidget->width(), fontMetrics().height(), Qt::AlignRight, number );
}
block = block.next();
top = bottom;
bottom = top + (int)blockBoundingRect( block ).height();
++blockNumber;
}
}
示例10: painter
void ScriptView::paintLineNumberArea(QPaintEvent* pevent)
{
QPainter painter(mpLineNumberArea);
QTextBlock block = firstVisibleBlock();
int blocknumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
while ( block.isValid() && top <= pevent->rect().bottom() )
{
if ( block.isVisible() && bottom >= pevent->rect().top())
{
QString number = QString::number(blocknumber + 1);
painter.setPen(Qt::darkGray);
painter.drawText(0, top, mpLineNumberArea->width(),
fontMetrics().height(), Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + (int) + blockBoundingRect(block).height();
++blocknumber;
}
}
示例11: painter
//-------------------------------------------------------------------------
void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
{
QPainter painter(lineNumberArea);
painter.setPen(Qt::gray);
QFont lineFont = document()->defaultFont();
lineFont.setPointSize( lineFont.pointSize()*2/3 );
painter.setFont( lineFont );
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top() + fontMetrics().leading();
int bottom = top + (int) blockBoundingRect(block).height();
while (block.isValid() && top <= event->rect().bottom()) {
if (block.isVisible() && bottom >= event->rect().top()) {
QString number = QString::number(blockNumber + 1);
painter.drawText(0, top, lineNumberArea->width(), fontMetrics().height(),
Qt::AlignRight | Qt::AlignBottom, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例12: painter
void ScriptEditBox::lineNumberAreaPaintEvent(QPaintEvent* event)
{
QPainter painter(_scriptLineNumberArea);
painter.fillRect(event->rect(), Qt::lightGray);
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
while (block.isValid() && top <= event->rect().bottom()) {
if (block.isVisible() && bottom >= event->rect().top()) {
QFont font = painter.font();
font.setBold(this->textCursor().blockNumber() == block.blockNumber());
painter.setFont(font);
QString number = QString::number(blockNumber + 1);
painter.setPen(Qt::black);
painter.drawText(0, top, _scriptLineNumberArea->width(), fontMetrics().height(),
Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
blockNumber++;
}
}
示例13: painter
void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event) {
QPainter painter( lineNumberArea ) ;
painter.fillRect( event->rect(), QColor( Qt::lightGray ).lighter( 120 ) ) ;
QTextBlock block = firstVisibleBlock() ;
QTextCursor cursor = textCursor() ;
int blockNumber = block.blockNumber() ;
int top = (int) blockBoundingGeometry( block ).translated( contentOffset() ).top() ;
int bottom = top + (int) blockBoundingRect(block).height() ;
while ( block.isValid() && top <= event->rect().bottom() ) {
if ( block.isVisible() && bottom >= event->rect().top() ) {
QString number = QString::number( blockNumber + 1 ) ;
if ( block == cursor.block() )
painter.setPen( QColor( Qt::black ) ) ;
else
painter.setPen( Qt::gray ) ;
painter.drawText(
0, top, lineNumberArea->width(), fontMetrics().height(),
Qt::AlignHCenter, number
) ;
}
block = block.next() ;
top = bottom ;
bottom = top + (int)blockBoundingRect( block ).height() ;
blockNumber += 1 ;
}
}
示例14: plt
void GenericCodeEditor::paintLineIndicator( QPaintEvent *e )
{
QPalette plt( mLineIndicator->palette() );
QRect r( e->rect() );
QPainter p( mLineIndicator );
p.fillRect( r, plt.color( QPalette::Mid ) );
p.setPen( plt.color(QPalette::Dark) );
p.drawLine( r.topRight(), r.bottomRight() );
p.setPen( plt.color(QPalette::ButtonText) );
QTextDocument *doc = QPlainTextEdit::document();
QTextCursor cursor(textCursor());
int selStartBlock, selEndBlock;
if (cursor.hasSelection()) {
selStartBlock = doc->findBlock(cursor.selectionStart()).blockNumber();
selEndBlock = doc->findBlock(cursor.selectionEnd()).blockNumber();
}
else
selStartBlock = selEndBlock = -1;
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
qreal top = blockBoundingGeometry(block).translated(contentOffset()).top();
qreal bottom = top + blockBoundingRect(block).height();
while (block.isValid() && top <= e->rect().bottom()) {
if (block.isVisible() && bottom >= e->rect().top()) {
p.save();
QRectF numRect( 0, top, mLineIndicator->width() - 1, bottom - top );
int num = blockNumber;
if (num >= selStartBlock && num <= selEndBlock) {
num -= selStartBlock;
p.setPen(Qt::NoPen);
p.setBrush(plt.color(QPalette::Highlight));
p.drawRect(numRect);
p.setPen(plt.color(QPalette::HighlightedText));
}
QString number = QString::number(num + 1);
p.drawText(0, top, mLineIndicator->width() - 4, bottom - top,
Qt::AlignRight, number);
p.restore();
}
block = block.next();
top = bottom;
bottom = top + blockBoundingRect(block).height();
++blockNumber;
}
}
示例15: painter
void CSVWorld::ScriptEdit::lineNumberAreaPaintEvent(QPaintEvent *event)
{
QPainter painter(mLineNumberArea);
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
int startBlock = textCursor().blockNumber();
int endBlock = textCursor().blockNumber();
if(textCursor().hasSelection())
{
QString str = textCursor().selection().toPlainText();
int selectedLines = str.count("\n")+1;
if(textCursor().position() < textCursor().anchor())
endBlock += selectedLines;
else
startBlock -= selectedLines;
}
painter.setBackgroundMode(Qt::OpaqueMode);
QFont font = painter.font();
QBrush background = painter.background();
while (block.isValid() && top <= event->rect().bottom())
{
if (block.isVisible() && bottom >= event->rect().top())
{
QFont newFont = painter.font();
QString number = QString::number(blockNumber + 1);
if(blockNumber >= startBlock && blockNumber <= endBlock)
{
painter.setBackground(Qt::cyan);
painter.setPen(Qt::darkMagenta);
newFont.setBold(true);
}
else
{
painter.setBackground(background);
painter.setPen(Qt::black);
}
painter.setFont(newFont);
painter.drawText(0, top, mLineNumberArea->width(), fontMetrics().height(),
Qt::AlignRight, number);
painter.setFont(font);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}