Добавил:
Факультет ИКСС, группа ИКВТ-61 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LAB / WORK_9 / WORK_9 / Cross_App / untitled / appwidget

.cpp
Скачиваний:
31
Добавлен:
20.02.2019
Размер:
4.04 Кб
Скачать
#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();
}
Соседние файлы в папке untitled