Вот класс, решающий твою задачу
class QyScintillaMarginMarker {
public:
QyScintillaMarginMarker( QsciScintilla * scintilla, QsciScintilla::MarkerSymbol symbol, int id );
~QyScintillaMarginMarker();
int position() const { return p_position; } // строка на против которой стоит маркет, по умолчанию -1
QsciScintilla * scintilla() const { return p_scintilla; }
void setPosition( int position ); // Установить строку напротив которой будет маркер
void setForeground( const QColor & color );
void setBackground( const QColor & color );
private:
QsciScintilla * p_scintilla;
int markerHandle, p_id, p_position;
};
QyScintillaMarginMarker::QyScintillaMarginMarker( QsciScintilla * scintilla,
QsciScintilla::MarkerSymbol symbol, int id )
{
p_scintilla = scintilla;
p_id = id;
markerHandle = 0;
p_position = -1;
if (p_scintilla)
p_scintilla->markerDefine( symbol, p_id ); // деклприруем маркер, symbol - вид маркера, p_id - тип маркера (произвольное число, типы маркеров рекомендую сделать энумом)
}
QyScintillaMarginMarker::~QyScintillaMarginMarker() {
if ( markerHandle > 0 )
p_scintilla->markerDeleteHandle(markerHandle); // удаляем макер
}
void QyScintillaMarginMarker::setPosition( int position ) {
Q_ASSERT(p_scintilla);
p_position = position;
if ( markerHandle > 0 )
p_scintilla->markerDeleteHandle(markerHandle); // удаляем макер ели уже установлен
markerHandle = p_scintilla->markerAdd( p_position, p_id ); // вешаем маркер типа p_id, на строку p_position
}
void QyScintillaMarginMarker::setForeground( const QColor & color ) {
Q_ASSERT(p_scintilla);
p_scintilla->setMarkerForegroundColor( color, p_id );
}
void QyScintillaMarginMarker::setBackground( const QColor & color ) {
Q_ASSERT(p_scintilla);
p_scintilla->setMarkerBackgroundColor( color, p_id );
}
Использование
QyScintillaMarginMarker * myMarker;
QsciScintilla * myScintilla;
...
myMarker = new QyScintillaMarginMarker( myScintilla, QsciScintilla::RightArrow, 0 ); // создаем маркер - стрелочку
// расскраска
myMarker->setBackground( QColor("#ff9c00") );
myMarker->setForeground( QColor("#181818") );
...
myMarker->setPosition(50); // устанавливаем положение
...
myMarker->setPosition(10);
Вроде ничего сложного, если что пиши.