Использование визуальных компонент в режиме диалога
Автор: Тимур Остер • Апрель 1, 2023 • Лабораторная работа • 1,420 Слов (6 Страниц) • 212 Просмотры
Задание 1. Реализовать алгоритм вычисления величин по варианту при заданных исходных значениях. Ввод выполнить через текстовые поля, вывод в label. Должна быть label с подсказкой (типа “введите длины сторон:”). Вычисления выполнять по нажатию кнопки. [см. 1) лекция 9]. Задание выполнить на Qt, Visual Studio C++, Visual Studio C#
Задание 2. Модифицировать программу lab11, заменив нажатие кнопки обработкой событий выхода из текстового поля. При некорректном вводе фокус остается в этом поле. При нажатии кнопки приложение завершается.
Вариант 15. Даны координаты точки в пространстве. Найти расстояние до симметричной точки -x -y -z .
Qt:
Листинг итоговой программы
#include "coords.h"
#include "ui_coords.h"
#include <QtMath>
Coords::Coords(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::Coords)
{
ui->setupUi(this);
}
Coords::~Coords()
{
delete ui;
}
void Coords::on_Calculate_button_clicked()
{
double x = ui->spin_X->value(),
y = ui->spin_Y->value(),
z = ui->spin_Z->value();
ui->result_label->setText(QString::number(2 * qSqrt(x*x+y*y+z*z)));
}
void Coords::on_spin_X_editingFinished()
{
on_Calculate_button_clicked();
}
void Coords::on_spin_Y_editingFinished()
{
on_Calculate_button_clicked();
}
void Coords::on_spin_Z_editingFinished()
{
on_Calculate_button_clicked();
}
Результат и интерфейс программы с кнопкой представлен на рисунке 1.
[pic 1] [pic 2]
Рисунок 1 – Тест программы (C++/CLI первое задание)
Для выполнения второго задания отключили кнопку и стрелки у спинов. По завершению редактирования какого-либо из полей результат вычисляется автоматически (Рисунок 2).
[pic 3] [pic 4]
Рисунок 2 – Тест программы (Qt второе задание)
Visual studio C++ (CLI):
Листинг итоговой программы
#pragma once
#include <math.h>
namespace Osterlab11CPP {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Сводка для MyForm
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
protected:
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::Label^ label2;
...