Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Примеры отчетов / ООП. Лаб. 6

.docx
Скачиваний:
78
Добавлен:
30.03.2020
Размер:
236.97 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ "САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА"

Факультет инфокоммуникационных сетей и систем

Кафедра программной инженерии и вычислительной техники

ЛАБОРАТОРНАЯ РАБОТА №6

«ПРОЕКТ С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ QT»

по дисциплине «Объектно-ориентированное программирование»

Выполнил:

студент 2 курса

дневного отделения

группы ИКПИ-81

Коваленко Л. А.

Санкт-Петербург 2019

А. Постановка задачи

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

На форме находятся 8 компонентов: QToolBar, QLineEdit, QComboBox, QLineEdit, QPushButton, QPushButton, QPushButton, QTableWidget. Компоненты LineEdit служат для хранения операндов, а QTableWidget — вывода результатов вычислений. Первый QPushButton для удаления выделенной строки таблицы, второй для вычисления и добавления строки в таблицу, третий для очистки таблицы. Обеспечить выполнение пяти обычных арифметических операций.

Б. Интерфейс

В. Содержимое файлов

mainwindow.h

#ifndef MAINWINDOW_H #define MAINWINDOW_H   #include <QMainWindow>   namespace Ui { class MainWindow; }   class MainWindow : public QMainWindow {     Q_OBJECT   public:     explicit MainWindow(QWidget *parent = nullptr);     ~MainWindow();   private slots:     void on_pushButton_clicked();       void on_actionAddition_triggered();       void on_actionSubtraction_triggered();       void on_actionMultiplication_triggered();       void on_actionDivision_triggered();       void on_actionExponentiation_triggered();       void on_pushButton_3_clicked();       void on_pushButton_2_clicked();   private:     Ui::MainWindow *ui; };   #endif // MAINWINDOW_H

mainwindow.h

#include "mainwindow.h" #include "ui_mainwindow.h"   MainWindow::MainWindow(QWidget *parent) :     QMainWindow(parent),     ui(new Ui::MainWindow) {     ui->setupUi(this); }   MainWindow::~MainWindow() {     delete ui; }   void MainWindow::on_pushButton_clicked() {     double a = ui->lineEdit->text().toDouble();     double b = ui->lineEdit_2->text().toDouble();     double result = 0;     QString op = ui->comboBox->currentText();     if (op == "+") result = a + b;     if (op == "–") result = a - b;     if (op == "×") result = a * b;     if (op == "÷") result = a / b;     if (op == "^") result = pow(a, b);     QTableWidgetItem * operandA = new QTableWidgetItem(QString::number(a));     operandA->setTextAlignment(Qt::AlignCenter);     QTableWidgetItem * operandB = new QTableWidgetItem(QString::number(b));     operandB->setTextAlignment(Qt::AlignCenter);     QTableWidgetItem * this_operator = new QTableWidgetItem(op);     this_operator->setTextAlignment(Qt::AlignCenter);     QTableWidgetItem * rs = new QTableWidgetItem(QString::number(result));     rs->setTextAlignment(Qt::AlignCenter);     ui->tableWidget->setRowCount(ui->tableWidget->rowCount() + 1);     ui->tableWidget->setItem(ui->tableWidget->rowCount() - 1, 0, operandA);     ui->tableWidget->setItem(ui->tableWidget->rowCount() - 1, 1, this_operator);     ui->tableWidget->setItem(ui->tableWidget->rowCount() - 1, 2, operandB);     ui->tableWidget->setItem(ui->tableWidget->rowCount() - 1, 3, rs); }   void MainWindow::on_actionAddition_triggered() {     ui->comboBox->setCurrentIndex(0);     MainWindow::on_pushButton_clicked(); }   void MainWindow::on_actionSubtraction_triggered() {     ui->comboBox->setCurrentIndex(1);     MainWindow::on_pushButton_clicked(); }   void MainWindow::on_actionMultiplication_triggered() {     ui->comboBox->setCurrentIndex(2);     MainWindow::on_pushButton_clicked(); }   void MainWindow::on_actionDivision_triggered() {     ui->comboBox->setCurrentIndex(3);     MainWindow::on_pushButton_clicked(); }   void MainWindow::on_actionExponentiation_triggered() {     ui->comboBox->setCurrentIndex(4);     MainWindow::on_pushButton_clicked(); }   void MainWindow::on_pushButton_3_clicked() {     ui->tableWidget->removeRow(ui->tableWidget->currentRow()); }   void MainWindow::on_pushButton_2_clicked() {     ui->tableWidget->setRowCount(0); }  

main.cpp

#include "mainwindow.h" #include <QApplication>   int main(int argc, char *argv[]) {     QApplication a(argc, argv);     MainWindow w;     w.show();       return a.exec(); }

Lab6_new.pro

#------------------------------------------------- # # Project created by QtCreator 2019-08-10T12:48:37 # #-------------------------------------------------   QT       += core gui   greaterThan(QT_MAJOR_VERSION, 4): QT += widgets   TARGET = Lab6_new TEMPLATE = app   # The following define makes your compiler emit warnings if you use # any feature of Qt which has been marked as deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS   # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0   CONFIG += c++11   SOURCES += \         main.cpp \         mainwindow.cpp   HEADERS += \         mainwindow.h   FORMS += \         mainwindow.ui   # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target

Соседние файлы в папке Примеры отчетов