
Примеры отчетов / ООП. Лаб. 6
.docx
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ "САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА"
Факультет инфокоммуникационных сетей и систем
Кафедра программной инженерии и вычислительной техники
ЛАБОРАТОРНАЯ РАБОТА №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 |