Спроектируйте окно как показано на рисунке, используя 2 элемента типа textEdit.
В файл dialog.cpp внесите код, показанный ниже:
#include "dialog.h"
#include "ui_dialog.h"
#include <QTextStream> // для создания потока
Dialog::Dialog(QWidget *parent):
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
/* связываем сигнал об изменении текста в первом окне и слот FindWords(), который будет из текста выбирать слова, являющиеся числами */
connect(ui->textEdit, SIGNAL(textChanged()),
this, SLOT(FindWords()));
}
В файл dialog.h вставьте объявление слота:
public slots:
void FindWords();
В файле dialog.cpp напишите определение слота:
void Dialog::FindWords()
{
QString str = ui->textEdit->toPlainText();
// считываем текст из окна textEdit (текст может быть многострочным)
QTextStream in(&str, QIODevice::ReadOnly);
// создаем поток для чтения слов из текста
QString rez; // текст, который будет выводиться во втором окне
QString number; // строка, в которую будет считываться одно слово из текста
while (!in.atEnd()) // пока поток не закончен
{
in >> number; // считываем одно слово
QDoubleValidator* validator = new QDoubleValidator;
// создаем указатель на валидатор
int pos = 0; /* позиция в строке, с которой будет начинаться проверка (эта переменная нужна для функции validate()) */
if(validator->validate(number, pos)) // проверяем слово number
rez += number + '\n';
// если слово является числом, добавляем его к тексту
}
ui->textEdit_2->setText(rez); // выводим полученные числа на экран
}