logo
Разработка Windows приложения определения гороскопа по дате рождения

2.6 Разработка пользовательского интерфейса

При разработке ПС использовалось создание приложения на базе главного окна класса QMainWindow. Главное окно предоставляет структуру для создания пользовательского интерфейса приложения. Qt имеет класс QMainWindow и связанные с ним классы для управления главным окном. QMainWindow имеет собственный компоновщик, в который вы можете добавлять QToolBarы, QDockWidgetы, QMenuBar, и QStatusBar. Компоновщик имеет центральную область, которая может быть занята любым виджетом. В данной программе в центральной области поле ввода даты и кнопка.

2.7 Кодирование модулей ПС

Для получения прогноза пользователь выбирает нужную дату и нажимает кнопку «Получить». По нажатию данной кнопки вызывается слот on_pushButton_clicked(), в котором считывается дата. После чего создается диалоговое окно с помощью класса QDialog, и начинается считывание гороскопа из файла. Какой именно выбрать файл позволяет функция what_sign(day,month), аргументами которой являются день и месяц.

После считывания гороскопа, формируется и выводится на экран диалоговое окно с содержимым файла. При отсутствии выбранного файла программа оповестит с помощью окна предупреждения на базе QMessageBox, какого именно файла нет в папке гороскопов.

Для редактирования гороскопа нужно вызвать диалоговое окно путем выбора из «Меню» пункта «Редактировать гороскоп», либо открыть одноименное окно путем сочетания клавиш «Ctrl» + «E». После чего вызовется слот on_actionEdit_triggered(). После вывода окна редактирования на нем будут доступны две кнопки «Открыть файл» и «Сохранить», которые связаны со слотами on_pushButton_clicked() и on_pushButton_2_clicked() соответственно. Первый слот позволяет считать и вывести на экран выбранный файл, второй слот сохраняет этот файл, а именно обновляет его содержимое.

void MainWindow::on_pushButton_clicked()

{

QDate date = ui->dateEdit->date();//считываем дату

int day = date.day();//разделяем день

int month = date.month();//и месяц

QDialog *dlg = new QDialog(this);//создаем указатель на диалоговое окно

QTextEdit *textEdit = new QTextEdit(dlg);//и указатель текст , который будет выводится из файла

textEdit->viewport()->setAutoFillBackground(false);//сделаем фон прозрачный

textEdit->setFrameStyle(QFrame::NoFrame);//и без рамки

textEdit->setReadOnly(true);//и только для чтения

QString filename,name;// перменные текстового файла и знака

// Вычисляем знак зодиака

filename = what_sign(day,month);// получаем название текст. файла

name = name_sign(day,month);//и название гороскопа

QString pp(PROJECT_PATH);//путь к папке с гороскопами

QFile file(pp+"/zz/"+filename); /* объявляем файл */

if (file.exists()) // если файл найден

{

file.open(QIODevice::ReadOnly|QIODevice::Text);//открываем для чтения

QString text = file.readAll(); // считываем весь текст

textEdit->setText(text); // выводим текст файла на экран

textEdit->show();//выводим текст

dlg->setWindowTitle(name);//установиим название окна

dlg->show();//и выведем окно

}

else// если не найдет файл выведем предупреждение об ошибке

QMessageBox::critical(this,"Ошибка","Файл "+filename+" не найден");

}