hallo,
ich hab nun eine teillösung, die ansatzweise das macht was ich vorhab.
hier mal mein code:
Code: Alles auswählen
MyTextEdit::MyTextEdit( QWidget* parent )
: QWidget( parent )
{
QHBoxLayout *editLayout = new QHBoxLayout(this);
editLayout->setMargin(0);
lineNumber = new QTextEdit;
lineNumber->setMaximumWidth(50);
lineNumber->setStyleSheet( "border: 0px solid black" );
lineNumber->setText("1");
lineNumber->setAlignment( Qt::AlignRight );
lineNumber->verticalScrollBar()->setVisible( false );
lineNumber->setEnabled( false );
edit = new QTextEdit;
edit->setStyleSheet( "border: 0px solid black" );
output = new QLineEdit;
editLayout->addWidget(lineNumber);
editLayout->addWidget(edit);
editLayout->addWidget(output);
connect( edit->document(), SIGNAL(contentsChange(int,int,int)), this, SLOT(textChanged(int,int,int)) );
connect( edit, SIGNAL(cursorPositionChanged()), this, SLOT(sliderPosition1()) );
connect( edit->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(sliderPosition(int)) );
}
void MyTextEdit::sliderPosition(int)
{
int pos1 = lineNumber->verticalScrollBar()->value();
int pos2 = edit->verticalScrollBar()->value();
lineNumber->verticalScrollBar()->setRange( 0,65535 );
edit->verticalScrollBar()->setRange( 0,65535 );
lineNumber->verticalScrollBar()->setSliderPosition( pos2 );
output->setText( QString::number(pos1)+" - "+QString::number(pos2) );
}
void MyTextEdit::sliderPosition1()
{
int pos1 = lineNumber->verticalScrollBar()->value();
int pos2 = edit->verticalScrollBar()->value();
lineNumber->verticalScrollBar()->setRange( 0,65535 );
edit->verticalScrollBar()->setRange( 0,65535 );
lineNumber->verticalScrollBar()->setSliderPosition( pos2 );
output->setText( QString::number(pos1)+" - "+QString::number(pos2) );
}
der scrollt nun das linenumbertextedit automatisch mit, wenn ich das edittextedit scrolle oder den cursor verschiebe.
allerdings hab ich die sliderrange statisch festlegen müssen, da mir keine andere lösung bekannt ist. das macht natürlich auch den greifer der scrollbar klein, sobald sie sichtbar wird.
kann mir evtl noch jemand sagen, wie sich der greifer der scrollbar besser anpassen lässt, sodass ich auch nur in dem textdocument scrollen kann, die auch schon sichtbar sind??
danke
