Не могу разобраться с textedit



  • Помогите плиз, нужно с текста в textEdit выбрать слово и проверить есть ли такое слово в файле, собственно мне нужна помощь с textEdit не могу понять как взять из него слово до разделительного символа и ввести его в переменную типа QString.



  • #include <QApplication>
    #include <QTextEdit>
    #include <QDebug>
    #include <QPalette>
    
    #define SET_BG_COLOR(edit, color)\
        QPalette palette;\
        palette.setColor(QPalette::Base, (color));\
        palette.setColor(QPalette::Text, (color) == Qt::red ? Qt::white : Qt::black);\
        (edit).setPalette(palette);
    
    
    // вот функция которая тебе нужна
    // возвращает:
    // -1: одна из строк пустая
    // 0: не нашли
    // 1: нашли
    int findText(const QString &textEdit, const QString &textFile){
        // если один из текстов пустой
        if(!textEdit.length() || !textFile.length()){
            return -1;
        }
    
        // означает: читать строку до символа разделителя, включает (пробел, -, _)
        QRegExp rx("[^ \\-_]*");
    
        // находим строку до разделителя
        if (rx.indexIn(textEdit) != -1){
            // отрезаем строку до разделителя"
            QString find = textEdit.left(rx.matchedLength());
            // производим поиск в тексте
            return textFile.indexOf(find) != -1;
        }
    
        return 0;
    }
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        const QString textFile =  "Помогите плиз, нужно с текста в textEdit выбрать "
                            "слово и проверить есть ли такое слово в "
                            "файле, собственно мне нужна помощь с textEdit не могу "
                            "понять как взять из него слово до "
                            "разделительного символа и ввести его в переменную типа QString";
        QTextEdit edit;
        // при изменении текста будем делать проверку
        QObject::connect(&edit, &QTextEdit::textChanged, [&edit, &textFile](){
            QColor color = Qt::white;
    
            switch(findText(edit.toPlainText(), textFile)){
                case -1: break; // цвет по умолчанию белый
                case 0: color = Qt::red; break;
                case 1: color = Qt::green; break;
            }
            SET_BG_COLOR(edit,  color);
        });
    
        edit.show();
        return app.exec();
    }
    

Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.