NumberedTextView::NumberedTextView( QWidget *parent ) : QFrame( parent ) { setFrameStyle( QFrame::StyledPanel | QFrame::Sunken ); setLineWidth( 2 ); // Setup the main view view = new QTextEdit( this ); //view->setFontFamily( "Courier" ); view->setLineWrapMode( QTextEdit::NoWrap ); view->setFrameStyle( QFrame::NoFrame ); connect( view->document(), SIGNAL(contentsChange(int,int,int)), this, SLOT(textChanged(int,int,int)) ); // Setup the line number pane numbers = new NumberBar( this ); numbers->setTextEdit( view ); // Test markLine(2); //setup layout box = new QHBoxLayout( this ); box->setSpacing( 0 ); box->setMargin( 0 ); box->addWidget( numbers ); box->addWidget( view ); }
/*! \reimp */ void QHeader::mouseMoveEvent( QMouseEvent *e ) { int section; bool hit; int c = orient == Horizontal ? e->pos().x() : e->pos().y(); c += offset(); switch( state ) { case Idle: hit = FALSE; if ( (section = sectionAt( c )) >= 0 ) { int index = d->s2i[section]; if ( (index > 0 && c < d->positions[index] + GRIPMARGIN) || (c > d->positions[index] + d->sizes[section] - GRIPMARGIN) ) { if ( index > 0 && c < d->positions[index] + GRIPMARGIN ) section = d->i2s[--index]; if ( d->resize.testBit(section) ) { hit = TRUE; #ifndef QT_NO_CURSOR if ( orient == Horizontal ) setCursor( splitHCursor ); else setCursor( splitVCursor ); #endif } } } #ifndef QT_NO_CURSOR if ( !hit ) unsetCursor(); #endif break; case Blocked: break; case Pressed: if ( QABS( c - clickPos ) > 4 && d->move ) { state = Moving; moveToIdx = -1; #ifndef QT_NO_CURSOR if ( orient == Horizontal ) setCursor( sizeHorCursor ); else setCursor( sizeVerCursor ); #endif } break; case Sliding: handleColumnResize( handleIdx, c, FALSE ); break; case Moving: { int newPos = findLine( c ); if ( newPos != moveToIdx ) { if ( moveToIdx == handleIdx || moveToIdx == handleIdx + 1 ) repaint( sRect(handleIdx) ); else unMarkLine( moveToIdx ); moveToIdx = newPos; if ( moveToIdx == handleIdx || moveToIdx == handleIdx + 1 ) paintRect( pPos( handleIdx ), pSize( handleIdx ) ); else markLine( moveToIdx ); } break; } default: qWarning( "QHeader::mouseMoveEvent: (%s) unknown state", name() ); break; } }
void QHeader::mouseMoveEvent( QMouseEvent *m ) { int s = orient == Horizontal ? m->pos().x() : m->pos().y(); if ( state == Idle ) { bool hit = FALSE; int i = 0; while ( i <= (int) count() ) { if ( i && pPos(i) - MINSIZE/2 < s && s < pPos(i) + MINSIZE/2 && data->resize.testBit(i-1) ) { hit = TRUE; if ( orient == Horizontal ) setCursor( *hSplitCur ); else setCursor( *vSplitCur ); break; } i++; } if ( !hit ) setCursor( arrowCursor ); } else { switch ( state ) { case Idle: debug( "QHeader::mouseMoveEvent() (%s) Idle state", name( "unnamed" ) ); break; case Pressed: case Blocked: if ( QABS( s - clickPos ) > 4 && data->move ) { state = Moving; moveToIdx = -1; if ( orient == Horizontal ) setCursor( sizeHorCursor ); else setCursor( sizeVerCursor ); } break; case Sliding: handleColumnResize( handleIdx, s, FALSE ); break; case Moving: { int newPos = findLine( s ); if ( newPos != moveToIdx ) { if ( moveToIdx == handleIdx || moveToIdx == handleIdx + 1 ) repaint( sRect(handleIdx) ); else unMarkLine( moveToIdx ); moveToIdx = newPos; if ( moveToIdx == handleIdx || moveToIdx == handleIdx + 1 ) paintRect( pPos( handleIdx ), pSize( handleIdx ) ); else markLine( moveToIdx ); } break; } default: warning( "QHeader::mouseMoveEvent: (%s) unknown state", name( "unnamed" ) ); break; } } }