Разработка программы калькулятор в программном пакете QT | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 30 ноября, печатный экземпляр отправим 4 декабря.

Опубликовать статью в журнале

Авторы: ,

Рубрика: Технические науки

Опубликовано в Молодой учёный №20 (124) октябрь-2 2016 г.

Дата публикации: 17.10.2016

Статья просмотрена: 1273 раза

Библиографическое описание:

Емельянова, Д. К. Разработка программы калькулятор в программном пакете QT / Д. К. Емельянова, А. М. Максимова. — Текст : непосредственный // Молодой ученый. — 2016. — № 20 (124). — С. 147-148. — URL: https://moluch.ru/archive/124/34334/ (дата обращения: 16.11.2024).



Ключевые слова: объектно-ориентированное программирование, QT, классы, калькулятор

Людям, делающим свои первые шаги в объектно-ориентированное программирование, полезно и крайне удобно делать это в программном пакете QT. В этой статье будет рассмотрена работа в QT на примере простейшего проекта — «Калькулятор».

QT — это кроссплатформенный фреймворк, который позволяет запустить программное обеспечение в любой операционной системе без изменения исходного кода. Также QT включает в себя множество полезных классов для работы с различными объектами, базами данных, графическим интерфейсом и многое другое, что сокращает объём работы. QT имеет множество и других полезных особенностей.

Проект калькулятор будет являться приложением QtWidgets, такой пункт и следует выбрать при создании проекта. После того как в диалоговом окне введены название проекта и путь, выбрать тип базового класса, который будет создан автоматически. Для проекта «Калькулятор» выберем тип QWidget, т. к. работа будет происходить непосредственно в главном окне, без использования строки меню, или панели инструментов, или всплывающих окон.

После создания проекта автоматически в нем будут созданы файлы:.срр, файлы главной функции и базового класса, heder базового класса и ui-форма. Написание проекта начинается в ui-форме — это окно, в котором можно создать внешний вид нашего проекта.

В созданной ui-форме надо расположить в нужном порядке необходимые компоненты визуальной составляющей проекта. Выберем в окне слева поле для ввода/вывода информации LineEdit и необходимое количество кнопок. Двойным нажатием на кнопку можно менять надпись на выбранной кнопке. Для калькулятора необходимо иметь кнопки с цифрами от 0 до 9, кнопки с простейшими операциями умножения, сложения, деления, вычитания, кнопки с такими операциями, как: возведение в степень, натуральный логарифм, синус и косинус, кнопка «=» для вывода результата операции и пара необходимых для любого калькулятора кнопок: стереть всё и стереть символ слева. Для того, чтобы код был понятным для любого пользователя, в свойствах любого объекта можно изменить его стандартное имя на более подходящее, например: Button_answer вместо pushButton_9.

Перейдем к самой программе. В heder файле необходимо объявить две переменные типа double и перечисление Operation, содержащее имена операций. В файле.срр опишем работу кнопок. Функции для описания работы кнопок по нажатию создаются после выполнения следующих действий: на ui-форме кликнуть ПКМ по нужной кнопке, во всплывающем окне выбрать «Перейти к слоту».. и выбрать сигнал clicked(). Функция для одной кнопки будет создана автоматически в файле calculator.cpp. Аналогичную операцию стоит провести со всеми имеющимися кнопками.

Стоит обратить внимание на разницу между оператором двойного двоеточия и точкой. Оператор двойного двоеточия отделяет имя класса от имени его члена или функции, а оператор точка отделяет имя экземпляра класса от имени его члена или функции.

Теперь опишем функции кнопок. Для кнопок с цифрами будем выводить в поле ввода/вывода информации цифру с кнопки. Вот пример функции для кнопки с единицей.

voidCalculator::on_OneButton_clicked()

{

ui->lineEdit->insert("1");

}

По нажатию на кнопки с простейшими арифметическими операциями, запишем в первую переменную типа double число, содержащееся в поле ввода/вывода информации, присвоим перечислению operation значение, соответствующее назначению кнопки и очистим поле ввода/вывода информации LineEdit. Пример функции для кнопки с назначением сложения:

voidCalculator::on_Button_plus_clicked()

{

A=ui->lineEdit->text().toDouble();

operation=Sum;

ui->lineEdit->clear();

}

Как можно заметить, по нажатию на кнопку с операцией, пока не производит самого вычисления, это мы оставили кнопке вывода результата. В её функции пропишем присваивание значения второй переменной типа double, объявим новую переменную для записи результата и, используя оператор ветвления switch, пропишем операции для получения результата для каждого значения перечисления operation. Затемвыведемполученныйответ.

voidCalculator::on_Button_answer_clicked()

{

B=ui->lineEdit->text().toDouble();

doubleC;

switch(operation){

caseSum:

C=A+B;

break;

caseSub:

C=A-B;

break;

caseDiv:

C=A/B;

break;

caseMult:

C=A*B;

break;

}

ui->lineEdit->setText(QString::number(C));

}

Для кнопок с операциями, не требующими второго числа, вычисление и вывод результата будут производиться сразу же. Читаем значение числа из поля ввода/вывода, рассчитываем квадрат, или логарифм, или синус или косинус, и сразу выводим на LineEdit. Это не сложно и аналогично предыдущим функциям, поэтому пример приводить не буду. Обработка нажатия на кнопку Clear — самое элементарное, а вот Deletе поинтереснее. Для того, чтобы удалить в поле ввода/вывода один элемент, понадобится считать, имеющееся число как строку, удалить в нём один элемент и записать обратно.

voidCalculator::on_Button_Del_clicked()

{

QStringstr=ui->lineEdit->text();

str.chop(1);

ui->lineEdit->setText(str);

}

В современном мире существует множество кроссплатформенных инструментариев разработки. Вопрос выбора оптимального встает перед каждым человеком начинающим изучать программированием. Данная статья является показательным примером того, как просто и удобно работать в программном пакете QT, на примере программы «Калькулятор».

Литература:

1. Роберт Лафоре. Объектно-ориентированное программирование в С++. — 4-е изд. —: Питер, 2015. — 928 с..

2. Creating a Qt Widget Based Application // Qt. URL: http://doc.qt.io/qtcreator/creator-writing-program.html (дата обращения: 14.10.2016).

Основные термины (генерируются автоматически): кнопка, вывод информации, пол ввода, базовый класс, функция, двойное двоеточие, объектно-ориентированное программирование, операция, программный пакет, создание проекта.


Похожие статьи

PlantUML: создание диаграмм с использованием текстового синтаксиса

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

Разработка системы автоматизированного тестирования

В ходе данного исследования был рассмотрен процесс разработки системы автоматизированного тестирования. Для разработки приложения нами использовалась среда Microsoft Visual Studio 2010 Ultimate.

Рассмотрение декларативного подхода к разработке интерфейсов мобильных приложений для Android

В данной статье рассматриваются императивный и декларативный подходы к разработке интерфейсов, анализируются преимущества и недостатки библиотеки Jetpack Compose.

Машинное обучение и язык программирования Python

В статье рассматриваются общие сведения о машинном обучении, его основные виды, а также наиболее значительные библиотеки для машинного обучения на языке Python.

Разработка программы для оптического распознавания символов с помощью Tesseract

В данной статье наглядно и подробно рассмотрен пример работы с библиотекой Tesseract ORC, создана программа для распознавания текста с фото.

Многопоточность в языке Swift

В статье рассмотрим основной способ выполнять код асинхронно, который используется в iOS приложениях. Подробно разобран основной функционал Grand Central Dispatch (GCD) и сценарии, в которых можно реализовать многопоточность с его помощью.

Абстрактные и динамически сгенерированные контроллеры в ASP.NET

В данной статье будет рассмотрен подход автоматически сгенерированных контроллеров в одной из самых популярных технологий для написания веб-сайтов — ASP.NET Core MVC.

Разработка программного модуля защиты информации методом стеганографии

В данной статье рассматривается процесс разработки программного модуля для шифрования текстовой информации в реальном изображении, с помощью языка программирования Rust, описываются основные аспекты стеганографии, в частности метод LSB.

Работа с элементами GUI на примере приложения с использованием кроссплатформенного фреймворка Qt

В статье подробно разобран код приложения, написанного с использованием кроссплатформенного фреймворка Qt основанного на языке C++. Приложение Dynamic Layouts является одним из примеров, входящих в пакет Qt Creator. На примере данного приложения расс...

Обзор библиотек обучения нейронных сетей на языке Python

В статье даётся обзор самых популярных библиотек машинного обучения языка Python.

Похожие статьи

PlantUML: создание диаграмм с использованием текстового синтаксиса

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

Разработка системы автоматизированного тестирования

В ходе данного исследования был рассмотрен процесс разработки системы автоматизированного тестирования. Для разработки приложения нами использовалась среда Microsoft Visual Studio 2010 Ultimate.

Рассмотрение декларативного подхода к разработке интерфейсов мобильных приложений для Android

В данной статье рассматриваются императивный и декларативный подходы к разработке интерфейсов, анализируются преимущества и недостатки библиотеки Jetpack Compose.

Машинное обучение и язык программирования Python

В статье рассматриваются общие сведения о машинном обучении, его основные виды, а также наиболее значительные библиотеки для машинного обучения на языке Python.

Разработка программы для оптического распознавания символов с помощью Tesseract

В данной статье наглядно и подробно рассмотрен пример работы с библиотекой Tesseract ORC, создана программа для распознавания текста с фото.

Многопоточность в языке Swift

В статье рассмотрим основной способ выполнять код асинхронно, который используется в iOS приложениях. Подробно разобран основной функционал Grand Central Dispatch (GCD) и сценарии, в которых можно реализовать многопоточность с его помощью.

Абстрактные и динамически сгенерированные контроллеры в ASP.NET

В данной статье будет рассмотрен подход автоматически сгенерированных контроллеров в одной из самых популярных технологий для написания веб-сайтов — ASP.NET Core MVC.

Разработка программного модуля защиты информации методом стеганографии

В данной статье рассматривается процесс разработки программного модуля для шифрования текстовой информации в реальном изображении, с помощью языка программирования Rust, описываются основные аспекты стеганографии, в частности метод LSB.

Работа с элементами GUI на примере приложения с использованием кроссплатформенного фреймворка Qt

В статье подробно разобран код приложения, написанного с использованием кроссплатформенного фреймворка Qt основанного на языке C++. Приложение Dynamic Layouts является одним из примеров, входящих в пакет Qt Creator. На примере данного приложения расс...

Обзор библиотек обучения нейронных сетей на языке Python

В статье даётся обзор самых популярных библиотек машинного обучения языка Python.

Задать вопрос