#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();
}