Знатоки Qt помогите пожалуйста,задача простая нужно всего лишь чтобы программа считала выбранный пользователем файл на палиндром и не палиндром.
Я реализовал выборку на файл и алгоритм проверки на палиндром но он работает не корректно все прекидует в НОТ Палиндорм
widget.cpp
#include "QtNameP.h"
#include "ui_widget.h"
#include <QFile>
#include <QFileDialog>
#include <QMessageBox>
#include <QString>
#include <algorithm>
Widget::Widget(QWidget *parent) :
QWidget(parent),
button{new QPushButton{"Add File",this}},
ListP{new QTextEdit{"Palindrom",this}},
ListNotP{new QTextEdit{"Not Palindrom",this}}
{
QHBoxLayout* hlayo{new QHBoxLayout};
hlayo->setMargin(50);
hlayo->setSpacing(50);
hlayo->addWidget(ListP);
hlayo->addWidget(ListNotP);
this->setLayout(hlayo);
connect(button,&QPushButton::clicked,
this,&Widget::AddFile);
// connect(this,&Widget::AddFile,
// this,QOverload<>::of(&Widget::CheckPalindrome));
}
Widget::~Widget()
{
}
void Widget::AddFile()
{
QString filename=QFileDialog::getOpenFileName(
this,
tr("Open File"),
tr("All File (*.*);;Text File(*.txt)"
));
QFile file(filename);
if (!file.open(QIODevice::ReadOnly))
QMessageBox::information(this,tr("Unable to open file"),file.errorString());
Pal(file);
}
void Widget::Pal(QFile& file)
{
QTextStream in (&file);
QString line=in.readAll();
// line.simplified().remove(' ');
if (std::equal(line.begin(), line.begin() + line.size()/2, line.rbegin()))
{
ListP->setText(line);
}
else{
ListNotP->setText(line);
}
}
void Widget::SaveFile()
{
}
Qtname.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QtWidgets>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
void AddFile();
void Pal(QFile& file);
void SaveFile();
protected:
QPushButton* button;
QTextEdit* ListP;
QTextEdit* ListNotP;
};
#endif // WIDGET_H
main.cpp
#include "QtNameP.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}