2

私のクラスでは、エラー用、警告用、ブレークポイント用の3つのマーカーを定義しようとしています。これは、2つのマーカーを定義しようとしたときにうまく機能しましたが、何らかの理由で、これらのマーカーの3分の1が行に追加されたときに表示されません。定義の順序を切り替えると、markerAdd()が呼び出されたときに表示されないのは常に3番目の定義です。ピックスマップは有効であり、Scintillaの戻り値は、マーカーの定義と追加の両方で正しいように見えます。QScintillaは、基になるシンチラコードを呼び出す前にいくつかのチェックを行うだけなので、これはQScintillaの質問というよりも一般的な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ステートメントの横に黄色の箇条書きがあるはずです。警告とブレークポイントの定義を切り替えると、黄色の箇条書きが表示され、黒い箇条書きが消えます。

4

1 に答える 1

0

あはは!何日も探した後、私はついに問題を見つけました。

    ui_editor->setMarginMarkerMask(1, m_breakpointMarker);

セットアップ メソッドで呼び出されていたため、ファンキーな動作が発生していました。これを削除すると、すべてが修正されました。

于 2011-06-27T13:58:56.257 に答える