В моем классе я пытаюсь определить 3 маркера, один для ошибок, один для предупреждений и один для точек останова.Это работало хорошо, когда я пытался определить только 2 маркера, но по какой-то причине третий из этих маркеров не появляется при добавлении в строку.Если вы меняете порядок определений, то всегда вызывается третий, который не отображается при вызове markerAdd ().Растровые изображения действительны, и возвращаемые значения Scintilla, по-видимому, верны как для определения, так и для добавления маркеров.Я полагаю, что это скорее общий вопрос о Scintilla, а не вопрос QScintilla, потому что QScintilla просто делает некоторые проверки перед вызовом базового кода сцинтиллы.Я понятия не имею, с чего начать отладку этого кода.Если кто-то может пролить свет на это, будь то известная причудливая сцинтилла или это моя вина, я буду вечно благодарен
m_errorIndicator = ui_editor->markerDefine(QPixmap(":/sourcefile/icon_set/icons/bullet_red.png"));
m_breakIndicator = ui_editor->markerDefine(QPixmap(":/sourcefile/icon_set/icons/bullet_black.png"));
m_warningIndicator = ui_editor->markerDefine(QPixmap(":/sourcefile/icon_set/icons/bullet_yellow.png"));
void SourceFile::on_actionAddBreakpoint_triggered()
{
qWarning() << "Added breakpoint to " << m_currentLine;
qWarning() << ui_editor->markerAdd(m_currentLine, m_breakIndicator);
m_breakpoints.append(m_currentLine);
}
void SourceFile::on_actionRemoveBreakpoint_triggered()
{
ui_editor->markerDelete(m_currentLine, m_breakIndicator);
m_breakpoints.removeAll(m_currentLine);
}
void SourceFile::clearProblems()
{
ui_editor->markerDeleteAll(m_errorIndicator);
ui_editor->markerDeleteAll(m_warningIndicator);
}
void SourceFile::markProblems(const QStringList& errors, const QStringList& warnings)
{
foreach(const QString& error, errors) {
int line = error.section(":", 1, 1).toInt();
if(--line < 0) continue;
ui_editor->markerAdd(line, m_errorIndicator);
}
foreach(const QString& warning, warnings) {
int line = warning.section(":", 1, 1).toInt();
if(--line < 0) continue;
ui_editor->markerAdd(line, m_warningIndicator);
}
}
Рядом с оператором printf должна быть желтая пуля.Если определения предупреждений и точек останова переключаются, появляется желтый маркер и черный маркер исчезает.