Scintilla(QScintilla)第3标记定义失败

时间:2011-06-24 18:02:02

标签: qt marker scintilla qscintilla

在我的班级中,我尝试定义3个标记,一个用于错误,一个用于警告,一个用于断点。当我只尝试定义2个标记时,这很有效,但由于某种原因,这些标记中的第三个在添加到一行时不会出现。如果切换定义的顺序,则始终是第三个在调用markerAdd()时无法显示的定义。像素图是有效的,Scintilla的返回值似乎对于定义和添加标记都是正确的。这更像是一个普通的Scintilla问题,而不是我认为的QScintilla问题,因为QScintilla只是在调用底层的scintilla代码之前做了一些检查。我不知道从哪里开始调试这段代码。如果有人能够对此有所了解,无论是一个已知的scintilla怪癖还是我的错,我都将永远感激不尽。

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语句旁边应该有一个黄色的子弹。如果切换警告和断点定义,黄色项目符号将显示,黑色项目符号将消失。

1 个答案:

答案 0 :(得分:0)

啊哈!经过几天的观察,我终于找到了问题。

    ui_editor->setMarginMarkerMask(1, m_breakpointMarker);

正在设置方法中调用,这导致了时髦的行为。删除此修复的一切。