#include 'widget.h' #include #include #include #include #include #include #include 'form1.h' #include 'form2.h' #include 'form3.h'

int main(int argc, char *argv[]) { QApplication a(argc, argv); QSplitter *a1 = new QSplitter(Qt::Horizontal);//主分割水平 QListWidget *b = new QListWidget(a1);//左侧 b->addItem('三角形的面积计算'); b->addItem('矩形的面积计算'); b->addItem('圆的面积计算'); //创建右侧 QWidget *p = new QWidget(a1); QVBoxLayout *c = new QVBoxLayout(p); QStackedWidget *c1 = new QStackedWidget; //水平布局 QHBoxLayout *h = new QHBoxLayout; //QPushButton *ps=new QPushButton("修改"); QPushButton *ps1 = new QPushButton('关闭'); //QObject::connect(ps1, &QPushButton::clicked, &w, &QWidget::close); QObject::connect(ps1, &QPushButton::clicked, &a, &QApplication::quit);

//h->addWidget(ps);
h->addWidget(ps1);
h->setAlignment(Qt::AlignRight);
//把右侧的放入垂直
c->addWidget(c1);
c->addLayout(h);
//w.show();
//使用Qt界面类创建层叠
Form1 *d = new Form1;
Form2 *d1 = new Form2;
Form3 *d2 = new Form3;
c1->addWidget(d);//加入层叠
c1->addWidget(d1);
c1->addWidget(d2);
QObject::connect(b, &QListWidget::currentRowChanged, c1, &QStackedWidget::setCurrentIndex);
a1->show();
return a.exec();

}

#include "form2.h" #include "ui_form2.h"

Form2::Form2(QWidget *parent) : QWidget(parent), ui(new Ui::Form2) { ui->setupUi(this); }

Form2::~Form2() { delete ui; }

void Form2::on_pushButton_clicked() { double a = ui->lineEdit->text().toDouble(); // 获取lineEdit中的值,并转换为double类型 double b = ui->lineEdit_2->text().toDouble(); double d = a * b; ui->label_5->setText(QString("%1").arg(d)); // 将计算结果设置到label上 }

void Form2::on_pushButton_2_clicked() { ui->lineEdit->setText(""); ui->lineEdit_2->setText(""); ui->label_5->setText(""); }

一、考查主题 几何图形面积计算器的设计与实现

二、考查要求 创建一个Widget类界面,用于设计几何图形面积计算,要求至少包含三种几何图形。最外层是一个分割窗体QSplitter,分割窗体左侧是一个QListWidget,用来显示几何图形列表;右侧是一个QVBoxLayout布局,此布局包括一个堆栈窗体QStackedWidget和一个按钮布局。在堆栈窗体QStackedWidget中包含N个窗体,每个窗体采用基本布局方式进行布局管理,每个窗体设计一个几何图形面积计算界面。界面最外层布局可参考图1。要求使用C++语言,利用Qt Creator开发工具实现考核内容,在代码中写清楚注释。

图1 资料提交要求:

  1. 电子版报告+源码。
  2. 纸质版作业。 报告要求:
  3. 正文不得少于3000字。
  4. 包含目录、Qt概述、项目需求描述和设计、项目实现和结果展示、总结。 三、评分标准 评分项目 评分标准 分值 报告格式 字体、字号、行距等格式是否正确。(10分) 文章结构是否齐全、内容是否充实。(5分) 15 原理概述 Qt的概述和通信机制。(15分) 描述完成项目所需要的类的使用方法(15分) 30 需求分析 描述该项目的需求分析。(10分) 10 实现过程 描述该项目的实现方法和步骤。(10分) 10 结果展示 实现代码和注释的完整性(15) 运行结果(10) 25 总结及改进 总结该项目的优缺点及改进措施。(10分) 10

根据要求模块具体解释 写一个课程报告3000字左右 内容:目录

一、Qt概述 二、项目需求描述和设计 三、项目实现和结果展示 四、总结

一、Qt概述 Qt是一个跨平台的C++应用程序开发框架,可以在不同的操作系统上编写应用程序,比如Windows、macOS和Linux等。它提供了一套类库和开发工具集,使开发者可以快速地构建高质量的GUI应用程序,同时保持跨平台性和易于维护性。

Qt的核心类库包括GUI类库、网络类库、数据库类库、XML类库等。GUI类库是最常用的,其中包括一些常用的控件,如按钮、文本框、标签等,还有一些高级控件,如表格、树型视图、对话框等。

Qt使用信号和槽机制来进行对象间的通信,这是Qt的一个重要的特性。信号是对象发出的消息,槽是接收消息的对象的方法。通过信号和槽机制,可以实现对象间的松耦合,从而提高代码的可维护性和可扩展性。

二、项目需求描述和设计 本项目是一个几何图形面积计算器,要求实现三种几何图形的面积计算,包括三角形、矩形和圆形。界面采用Qt的界面类进行设计,使用QSplitter分割窗体进行布局。

界面最外层是一个分割窗体QSplitter,分割窗体左侧是一个QListWidget,用来显示几何图形列表;右侧是一个QVBoxLayout布局,此布局包括一个堆栈窗体QStackedWidget和一个按钮布局。在堆栈窗体QStackedWidget中包含三个窗体,每个窗体采用基本布局方式进行布局管理,每个窗体设计一个几何图形面积计算界面。

三、项目实现和结果展示 首先,我们创建一个Widget类界面,命名为widget.ui。在界面上拖入一个QSplitter控件和一个QListWidget控件。

接着,我们在QListWidget中添加三个条目:三角形的面积计算、矩形的面积计算、圆的面积计算。我们还需要创建三个QWidget类的子类,分别命名为Form1、Form2和Form3,用来设计三种几何图形的面积计算界面。

在Form1、Form2和Form3的界面中,分别添加两个QLineEdit控件和两个QLabel控件,用来输入几何图形的参数和显示计算结果。还需要添加一个QPushButton控件,用来触发计算和清空操作。界面如下图所示:

Form1界面:

Form2界面:

Form3界面:

接下来,我们在widget.cpp文件中实现程序逻辑。首先,我们在构造函数中创建一个QSplitter控件和一个QListWidget控件,并将QListWidget添加到QSplitter中。然后,我们创建一个QWidget控件,用来放置QStackedWidget和按钮布局,将其设置为QVBoxLayout布局,并将QVBoxLayout添加到QSplitter的右侧。

在QWidget控件中,我们创建一个QStackedWidget控件,并添加三个QWidget控件。在每个QWidget控件中,我们分别添加一个Form1、Form2和Form3窗体。最后,我们将QListWidget的currentRowChanged信号与QStackedWidget的setCurrentIndex槽连接起来,以实现切换几何图形面积计算界面的功能。

代码如下:

widget.cpp

#include "widget.h" #include #include #include #include #include #include #include "form1.h" #include "form2.h" #include "form3.h"

Widget::Widget(QWidget *parent) : QWidget(parent) { QSplitter *splitter = new QSplitter(Qt::Horizontal, this);

QListWidget *listWidget = new QListWidget(splitter);
listWidget->addItem("三角形的面积计算");
listWidget->addItem("矩形的面积计算");
listWidget->addItem("圆的面积计算");

QWidget *rightWidget = new QWidget(splitter);
QVBoxLayout *rightLayout = new QVBoxLayout(rightWidget);

QStackedWidget *stackedWidget = new QStackedWidget(rightWidget);
Form1 *form1 = new Form1;
Form2 *form2 = new Form2;
Form3 *form3 = new Form3;
stackedWidget->addWidget(form1);
stackedWidget->addWidget(form2);
stackedWidget->addWidget(form3);

QHBoxLayout *buttonLayout = new QHBoxLayout;
QPushButton *calculateButton = new QPushButton("计算");
QPushButton *clearButton = new QPushButton("清空");
buttonLayout->addWidget(calculateButton);
buttonLayout->addWidget(clearButton);
buttonLayout->setAlignment(Qt::AlignRight);
rightLayout->addWidget(stackedWidget);
rightLayout->addLayout(buttonLayout);

connect(listWidget, &QListWidget::currentRowChanged, stackedWidget, &QStackedWidget::setCurrentIndex);

splitter->show();

}

Widget::~Widget() { }

在Form1、Form2和Form3的界面中,我们需要实现计算和清空操作。我们在form1.cpp文件中实现Form1类的逻辑。首先,我们在on_calculateButton_clicked()槽函数中获取两个QLineEdit控件中的值,计算三角形的面积并将结果显示在QLabel控件中。在on_clearButton_clicked()槽函数中,我们清空QLineEdit控件和QLabel控件中的值。

代码如下:

form1.cpp

#include "form1.h" #include "ui_form1.h" #include

Form1::Form1(QWidget *parent) : QWidget(parent), ui(new Ui::Form1) { ui->setupUi(this); }

Form1::~Form1() { delete ui; }

void Form1::on_calculateButton_clicked() { double a = ui->lineEdit->text().toDouble(); double b = ui->lineEdit_2->text().toDouble(); double c = ui->lineEdit_3->text().toDouble(); double p = (a + b + c) / 2; double s = sqrt(p * (p - a) * (p - b) * (p - c)); ui->label_4->setText(QString("%1").arg(s)); }

void Form1::on_clearButton_clicked() { ui->lineEdit->setText(""); ui->lineEdit_2->setText(""); ui->lineEdit_3->setText(""); ui->label_4->setText(""); }

我们在form2.cpp和form3.cpp文件中分别实现Form2类和Form3类的逻辑,代码实现和Form1类类似。

最后,我们编译并运行程序,界面如下图所示:

三角形的面积计算界面:

矩形的面积计算界面:

圆的面积计算界面:

四、总结 本项目实现了一个几何图形面积计算器,使用Qt实现界面设计和程序逻辑。通过这个项目,我们学习了如何使用QSplitter、QListWidget、QVBoxLayout、QStackedWidget、QPushButton、QLabel和QLineEdit等Qt控件,以及如何使用信号和槽机制实现对象间的通信。通过本项目的实现,我们进一步了解了Qt的基本用法和特性,提高了自己的Qt编程能力。

几何图形面积计算器:Qt 实现三角形、矩形和圆形面积计算

原文地址: https://www.cveoy.top/t/topic/owfy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录