Добавил:
Andrew1992
Факультет ИКСС, группа ИКВТ-61
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include "appwidget.h"
#include "ui_appwidget.h"
#include <QProcess>
#include <QDebug>
#include <QStringList>
#include <QFile>
#include "windows.h"
QString method = "random";
QString algorithm = "normal";
AppWidget::AppWidget(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::AppWidget)
{
ui->setupUi(this);
}
AppWidget::~AppWidget()
{
delete ui;
}
void AppWidget::on_start_explicit_clicked()
{
QProcess process;
QString program = "C:\\EulerApp\\release\\Euler.exe";
process.setCreateProcessArgumentsModifier([] (QProcess::CreateProcessArguments *args)
{
args->flags |= CREATE_NEW_CONSOLE;
args->startupInfo->dwFlags &= ~STARTF_USESTDHANDLES;
});
process.start(program);
process.waitForFinished(-1);
process.close();
}
void AppWidget::on_choice_force_clicked(bool checked)
{
if (checked)
method = "random";
}
void AppWidget::on_choice_strategy_clicked(bool checked)
{
if (checked)
method = "strategy";
}
void AppWidget::on_choice_modified_clicked(bool checked)
{
if (checked)
algorithm = "modified";
}
void AppWidget::on_choice_normal_clicked(bool checked)
{
if (checked)
algorithm = "normal";
}
void AppWidget::on_start_inhibit_clicked()
{
QProcess process;
QString startingSquare = "no";
QString finalSquare = "no";
QStringList parameters;
QString inputStart = ui->start_square->text();
QString inputFinal = ui->final_square->text();
QString inputIterations = ui->repeat_count->text();
QString inputProbability = ui->given_probability->text();
if (inputStart.isEmpty() == FALSE)
startingSquare = "yes";
if (inputFinal.isEmpty() == FALSE)
finalSquare = "yes";
if (inputIterations.isEmpty() == TRUE)
inputIterations = "0";
if (inputProbability.isEmpty() == TRUE)
inputProbability = "0";
if (inputIterations.toInt() != 0 && ui->choice_iterate->isChecked())
{
inputProbability = "0";
ui->given_probability->clear();
}
else if (inputProbability.toDouble() != 0 && ui->choice_probability->isChecked())
{
inputIterations = "0";
ui->repeat_count->clear();
}
parameters << startingSquare << inputStart << finalSquare
<< inputFinal << method << algorithm << inputIterations << inputProbability;
QString program = "C:\\EulerApp\\release\\Euler.exe";
process.startDetached(program, parameters);
process.waitForFinished(-1);
process.close();
QFile inputFile("C:/EulerApp/release/report.txt");
if (!inputFile.open(QIODevice::ReadOnly))
{
qDebug() << "Ошибка открытия для чтения";
}
else
{
QTextStream in(&inputFile);
if (!in.atEnd() && ui->choice_iterate->isChecked())
{
QString line = in.readLine();
ui->result_probability->setText(line);
ui->result_count->clear();
inputFile.close();
}
else if (!in.atEnd() && ui->choice_probability->isChecked())
{
in.readLine();
QString line = in.readLine();
ui->result_count->setText(line);
ui->result_probability->clear();
inputFile.close();
}
}
}
void AppWidget::on_clear_button_clicked()
{
ui->start_square->clear();
ui->final_square->clear();
ui->repeat_count->clear();
ui->given_probability->clear();
ui->result_probability->clear();
ui->result_count->clear();
}
void AppWidget::on_choice_iterate_clicked(bool checked)
{
if (checked)
ui->given_probability->clear();
}
void AppWidget::on_choice_probability_clicked(bool checked)
{
if (checked)
ui->repeat_count->clear();
}
void AppWidget::on_close_window_clicked(bool checked)
{
if (checked)
this->close();
}