Пример 3: программа, которая считывает текст из элемента tetxEdit и выводит в столбик числа, содержащиеся в тексте с помощью другого элемента типа textEdit

Спроектируйте окно как показано на рисунке, используя 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); // выводим полученные числа на экран

}



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: