QT, QSyntaxHighlighter, по некоторым причинам форматирование, сделанное его, не отражается в Textedit QMLC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 QT, QSyntaxHighlighter, по некоторым причинам форматирование, сделанное его, не отражается в Textedit QML

Сообщение Anonymous »

Работая: как только я введен текст в поле поиска (Searchbox), соответствующий текст в текстовом файле (редактор) должен выделить, что произойдет через класс SearchHighlighter.

Но по какой -то причине это не выделяется. Я проверил с помощью qdebug () , и все работает нормально в функции hightblock () . Но текстовый размер остается одинаковым даже после функции hightblock ().#ifndef SEARCHHIGHLIGHTER_H
#define SEARCHHIGHLIGHTER_H
#include
#include
#include
#include
#include

class SearchHighlighter : public QSyntaxHighlighter {
Q_OBJECT
public:
SearchHighlighter(QTextDocument *parent = nullptr)
: QSyntaxHighlighter(parent) {}

Q_INVOKABLE void setSearchTerm(const QString &term){
searchTerm = term;
rehighlight();
}
Q_INVOKABLE void setDocObj(QQuickTextDocument* textDocObj)
{
qDebug() textDocument();
setDocument(textDocObj->textDocument());
}

protected:
void highlightBlock(const QString &text) override {
if (searchTerm.isEmpty())
return;

QTextCharFormat fmt;
fmt.setForeground(Qt::red);
fmt.setBackground(Qt::yellow);

QRegularExpression re(QRegularExpression::escape(searchTerm),
QRegularExpression::CaseInsensitiveOption);
QRegularExpressionMatchIterator i = re.globalMatch(text);

while (i.hasNext()) {
QRegularExpressionMatch match = i.next();
QSyntaxHighlighter::setFormat(match.capturedStart(), match.capturedLength(), fmt);
}
}

private:
QString searchTerm;
};

#endif // SEARCHHIGHLIGHTER_H

main.cpp
#include
#include
#include
#include
#include

int main(int argc, char *argv[])
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreated,
&app,
(QObject *obj, const QUrl &objUrl) { if ... reflecting
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»