小工具知识网

当前位置: 首页 > 行业知识 > 关键信息标红

行业知识

关键信息标红

2026-11-07 09:42:52 来源:互联网转载

���果:

()

        导入一个文本文件到textEdit中,对指定的key关键字标红处理或者对关键字所在的行进行整行标红处理

实现:       

()
#ifndef WIDGET_H#define WIDGET_H#include QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{    Q_OBJECTpublic:    Widget(QWidget *parent = nullptr);    ~Widget();private slots:    void on_selectBtn_clicked();    //void on_setBtn_clicked();private:    void defaultConfig();    void loadStyleSheet(const QString &style);    void filterKeyWord(const QString& key, const QString& color);private:    Ui::Widget *ui;    QString mAppPath;};#endif // WIDGET_H   cpp      //#include "widget.h"#include "ui_widget.h"#include #include #include #include #include #include #include #include #include Widget::Widget(QWidget *parent)    : QWidget(parent)    , ui(new Ui::Widget){    ui->setupUi(this);    defaultConfig();    loadStyleSheet(":/home.qss");}Widget::~Widget(){    delete ui;}void Widget::loadStyleSheet(const QString &style){    if(style.isEmpty())        return;    QFile file(style);    if(!file.open(QFile::ReadOnly))        return;    this->style()->unpolish(this);    setStyleSheet(file.readAll());    this->style()->polish(this);}void Widget::on_selectBtn_clicked(){    QSettings config(mAppPath+"/setting.ini", QSettings::NativeFormat);    auto lastPath = config.value("last_path", QDir::homePath()).toString();    auto file = QFileDialog::getOpenFileName(this, tr("OpenFile"), lastPath,                                 tr("Text(*.txt);; All file(*.*)"));    if(file.isEmpty())        return;    QFile inputFile(file);    inputFile.open(QIODevice::ReadOnly);    QTextStream in(&inputFile);    in.setCodec("UTF-8");    ui->textEdit->setText(in.readAll());    inputFile.close();    config.setValue("last_path", file);    ui->path->setText(file);    //ui->textEdit->document()->undo();    config.beginGroup("keys");    auto kk = config.childKeys();    foreach (auto key, config.childKeys())        filterKeyWord(key, config.value(key, "#000").toString());    config.endGroup();}void Widget::defaultConfig(){    mAppPath = QApplication::applicationDirPath();    QSettings config(mAppPath+"/setting.ini", QSettings::NativeFormat);    config.beginGroup("keys");    if(config.childKeys().isEmpty())    {        config.setValue("ERROR", "#F00");        config.setValue("FATAL", "#FF0");    }    config.endGroup();}void Widget::filterKeyWord(const QString &key, const QString &color){    QTextDocument *document = ui->textEdit->document();    bool found = false;    // undo previous change (if any)    //document->undo();    if (key.isEmpty()) {        QMessageBox::information(this, tr("Empty Search Field"),                                 tr("The search field is empty. "                                    "Please enter a word and click Find."));    } else {        QTextCursor highlightCursor(document);        QTextCursor cursor(document);        cursor.beginEditBlock();//! [6]        QTextCharFormat plainFormat(highlightCursor.charFormat());        QTextCharFormat colorFormat = plainFormat;        colorFormat.setForeground(QColor(color));        while (!highlightCursor.isNull() && !highlightCursor.atEnd()) {            highlightCursor = document->find(key, highlightCursor,                                             QTextDocument::FindWholeWords);            if (!highlightCursor.isNull()) {                found = true;            //如果只是对关键字选中,则放开下面注释,并将下面select函数调用行注释掉//                highlightCursor.movePosition(QTextCursor::WordRight,//                                             QTextCursor::KeepAnchor);                highlightCursor.select(QTextCursor::LineUnderCursor);                highlightCursor.mergeCharFormat(colorFormat);            }        }//! [8]        cursor.endEditBlock();//! [7] //! [9]        if (found == false) {            QMessageBox::information(this, tr("Word Not Found"),                                     tr("Sorry, the word cannot be found."));        }    }}

ui文件,比较简单:

 Widget          0    0    800    600          LogParseTool           15                     6                               File:                                                            Select                                            Qt::Horizontal                      QSizePolicy::Minimum                               20         20                                                   Qt::NoContextMenu                Qt::ScrollBarAlwaysOff                Qt::ScrollBarAsNeeded                 

样式表,qss文件:

#Widget{    background-color: #4A4A4A;}#Widget #label{    color: #fff;    font-weight: bold;}#path{    color: #fff;    border-top: 0px solid red;    border-bottom: 1px solid #cdcdcd;    border-left: 0px solid red;    border-right: 0px solid red;    background: transparent;}#textEdit{    border-top: 0px solid red;    border-bottom: 1px solid #cdcdcd;    border-left: 1px solid #cdcdcd;    border-right: 1px solid #cdcdcd;    border: none;    background-color: #4A4A4A;}#selectBtn, #setBtn{    color: black;    background: #2d6699;}

上一篇:宝塔面板图制作教程,轻松上手,掌握制作技巧!

下一篇:卖浪潮服务器怎么样?