Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornyy_praktikum_po_programmirovaniyu_v_s...docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
130.48 Кб
Скачать
    1. Пример 2: Программа, которая находит квадратный корень числа.

Программа будет находить неотрицательный корень вещественного числа. Квадратный корень можно вычислить, только если подкоренное выражение неотрицательно, поэтому при недопустимом введенном значении программа будет выдавать сообщение об ошибке. Сообщение об ошибке может быть достаточно пространным, поэтому для вывода результата используем элемент Text Edit, который автоматически переносит текст на другую строку.

Спроектируйте диалоговое окно как показано на рисунке. Элементы, которые вы должны добавить: Label, Line Edit, Push Button и Text Edit. Верхние три элемента выровняйте, выделив их и нажав кнопку Lay Out Vertically. Text Edit не включайте в Layout, чтобы иметь возможность изменять его размеры.

Создайте слот для кнопки «Корень» и напишите код, показанный ниже.

#include "dialog.h"
#include "ui_dialog.h"
#include <math.h>
#include <QTextCodec>
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    adjustSize(); // делаем размеры окна минимально-необходимыми
}
Dialog::~Dialog()
{
    delete ui;
}
void Dialog::on_pushButton_clicked()
{
    QTextCodec* codec = QTextCodec::codecForName("UTF-8");
   QTextCodec::setCodecForCStrings(codec);
// 2 строчки, приведенные выше, позволяют выводить текст на русском языке

   double x = ui->lineEdit->text().toDouble(); // считываем число
   double y;
   if (x>=0)
   {
       y=sqrt(x); // извлекаем квадратный корень
       ui->textEdit->setText(QString::number(y,'f',5));
// выводим число с точностью 5 цифр после точки
   }
   else  ui->textEdit->setText("Число должно быть >= 0");
 // выводим сообщение об ошибке
}

Запустите программу и проверьте ее работу для допустимых и недопустимых исходных данных. Если текст сообщения умещается в одну строку, сделайте окно Text Edit поуже, чтобы увидеть как текст переносится на другую строку.

    1. Пример 3: Программа, которая иллюстрирует использование стандартных сигналов и слотов.

В качестве примера создадим программу, которая отображает введенное целое десятичное число или в двоичном, или в восьмеричном, или в десятичном или в шестнадцатеричном виде. Это легко сделать с помощью элемента LCD Number, который предназначен для отбражени чисел в виде жидко-кристаллического экранчика.

Создайте проект на базе класса Q Widget. Спроектируйте окно как показано на рисунке, используя элементы: Label, Line Edit, 4 Push Buttons, LCD Number.

В свойствах LCD Number установите : segment Style : Flat, digitCount : 20 (количество сегментов экрана, т.е. максимальное количество отображаемых цифр). Чем больше задать количество цифр, тем они будут мельче).

Задавать число мы будем с помощью элемента Line Edit. При изменениии числа в окне Line Edit должно изменяться значение в LCD Number. Для обеспечения этой связи можно использовать окно, которое располагается под проектом вида окна. Перейдите на вкладку Signals & Slots Editor и нажмите +. В список связей будет добавлена новая строка. Сделайте двойной щелчок в появившейся строке в первом поле <sender>. В появившемся списке выберите элемент lineEdit. Повторите эти действия в других полях так, чтобы связь была задана как показано на рисунке.

В результате при изменении содержимого элемента Line Edit будет автоматически изменяться содержимое элемента LCD Number.

Добавьте слот для кнопки <bin> и напишите в нем код как показано ниже. Повторите эти действия для других кнопок.

void Widget::on_pushButton_clicked()
{
    ui->lcdNumber->setMode(QLCDNumber::Bin); // двоичное представление 
    ui->lineEdit->setFocus();
}
void Widget::on_pushButton_2_clicked()
{
    ui->lcdNumber->setMode(QLCDNumber::Oct);
	// восьмеричное представление
    ui->lineEdit->setFocus();
}
void Widget::on_pushButton_3_clicked()
{
    ui->lcdNumber->setMode(QLCDNumber::Dec); // десятичное представление
    ui->lineEdit->setFocus();
}
void Widget::on_pushButton_4_clicked()
{
    ui->lcdNumber->setMode(QLCDNumber::Hex); // 16-е представление
    ui->lineEdit->setFocus();
}
Запустите программу и проверьте работу приложения.  
Обратите внимание на то, что в заголовке окна появилась кнопка «свернуть окно» (её не было в диалоговом окне), но теперь окно появляется в углу экрана. Откройте файл main.cpp и отредактируйте его так, как показано ниже. 
 #include <QtGui/QApplication>
#include "widget.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.move(400,300);  // перемещаем окно в центр экрана
    w.show();
    return a.exec();
}
Запустите программу.

Закройте проект.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]