Работая: как только я введен текст в поле поиска (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
QT, QSyntaxHighlighter, по некоторым причинам форматирование, сделанное его, не отражается в Textedit QML ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Qsyntaxhighlighter, по какой -то причине форматирование, сделанное, не отражается в Textedit
Anonymous » » в форуме C++ - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-