当前位置: 首页>>代码示例>>C++>>正文


C++ contentOffset函数代码示例

本文整理汇总了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;
    }
}
开发者ID:world2005,项目名称:OpenModelica,代码行数:36,代码来源:ModelicaEditor.cpp

示例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;
    }
}
开发者ID:sgerbino,项目名称:sol,代码行数:25,代码来源:codeeditor.cpp

示例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;
	}
}
开发者ID:6VV,项目名称:TeachingBox,代码行数:38,代码来源:CCodeEditor.cpp

示例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;
    }
}
开发者ID:Jeff-Lewis,项目名称:quickanddirty,代码行数:30,代码来源:codeeditor.cpp

示例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;
    }
}
开发者ID:KDE,项目名称:android-qt5-qtbase,代码行数:29,代码来源:codeeditor.cpp

示例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 );
}
开发者ID:ARTisERR0R,项目名称:supercollider,代码行数:25,代码来源:editor.cpp

示例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;
    }
}
开发者ID:3rdpaw,项目名称:MdCharm,代码行数:26,代码来源:baseeditor.cpp

示例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;
    }
}
开发者ID:johnwchadwick,项目名称:textaxe,代码行数:25,代码来源:textedit.cpp

示例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;
   }
}
开发者ID:chenwenbin928,项目名称:tamy,代码行数:31,代码来源:TextEditWidget.cpp

示例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;
    }
}
开发者ID:crafter2d,项目名称:crafter2d,代码行数:25,代码来源:scriptview.cpp

示例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;
    }
}
开发者ID:anttirt,项目名称:guidolib,代码行数:27,代码来源:CodeEditor.cpp

示例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++;
    }
}
开发者ID:AlphaStaxLLC,项目名称:hifi,代码行数:26,代码来源:ScriptEditBox.cpp

示例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 ;
    }
}
开发者ID:faa00,项目名称:pblazasm,代码行数:29,代码来源:codeeditor.cpp

示例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;
    }
}
开发者ID:brunoruviaro,项目名称:supercollider,代码行数:55,代码来源:editor.cpp

示例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;
    }
}
开发者ID:logorrhea,项目名称:openmw,代码行数:53,代码来源:scriptedit.cpp


注:本文中的contentOffset函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。