QT creator 5.3.2小白之路——计算长方形的面积

这篇博客介绍了QT Creator 5.3.2的基础知识,特别是如何利用Dialog基类和QGridLayout布局管理器设计界面,实现计算长方形面积的功能。文章详细讲解了构造函数的概念,QGridLayout::addWidget()的使用方法,并提供了实现逻辑的代码示例。

刚开始学习QT,我觉得需要一本完整的教材,然后利用好网络资源,通过编写例程的形式,逐步将QT的知识点融入到工程应用中去,这样效果会事半功倍。

本文主要是研究如何利用Dialog基类进行界面的设计,实现计算长方形的面积的功能。

看了QT5开发和实例(第二版),关于计算圆面积的范例,我想自己写一个计算长方形的范例。首先让我们共同学习一下关于构造函数的概念。

1、构造函数的概念

  1. 构造函数的命名必须和类名完全相同在java中普通函数可以和构造函数同名,但是必须带有返回值;
  2. 构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;
  3. 构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;
  4. 当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略;
  5. 构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)
  6. 当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。

         第一步,新建一个Dialog基类的工程,将项目名称命名为Rectangle,取消生成ui界面,因为本次采用布局管理器实现界面的设计。

        然后打开dialog.h头文件,必须在开始出添加所需的头文件,在class(类,结尾处要加上分号,详见网上资源)中定义变量,代码如下图:

#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QDialog>
private:
    QLabel *label1,*label2,*label3;//定义三个标签,构造函数中使用
    QLineEdit *lineEdit1,*lineEdit2;//定义两个文本框
    QPushButton *button;//点击按钮可以链接槽函数

       第二步,利用布局管理器实现对界面的设计。构造函数主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 ;打开dialog.cpp文件,在Dialog中添加如下代码,在文件开始处加上QGridLayout的头文件,然后开始控件的新建和实例化;具体代码如下:

 label1 = new QLabel(this);//实例化;
    label1->setText(tr("请输入长方形的长:"));
    label2 = new QLabel(this);
    label2->setText(tr("请输入长方形的宽:"));
    label3 = new QLabel(this);//作为数据输出的窗口;
 lineEdit1 = new QLineEdit(this);
    lineEdit2 = new QLineEdit(this);
    button = new QPushButton(this);
    button->setText(tr("显示长方形的面积:"));
    QGridLayout *mainLayout = new QGridLayout(this);//用于布局管理器,固定所有控件的位置;
    mainLayout->addWidget(label1,0,0);//第一个参数是控件名,第二个是行数(row),第三个为列数(column);
    mainLayout->addWidget(lineEdit1,0,1);
    mainLayout->addWidget(label2,1,0);
    mainLayout->addWidget(lineEdit2,1,1);
    mainLayout->addWidget(label3,2,0);
    mainLayout->addWidget(button,2,1);

           这里,我简单介绍一下QGridLayout::addWidget()的应用 ,一般有两种方式进行查询帮助:鼠标光标悬停在函数上,点击F1或者按住ctrl键,再用鼠标左键点击函数即可获得详细信息。

        2、QGridLayout::addWidget()的应用

 QGridLayout::addWidget ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 )

             row:行位置       column:列位置       alignment;对齐方式

void QGridLayout::addWidget(QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0)
           This is an overloaded function.

6个参数表示控件名,行,列,占用行数,占用列数,对齐方式

            ui界面设计完成之后,我们需要对计算逻辑进行梳理;在Dialog.h中,我们定义一个槽函数showArea():

private slots:
    void showArea();//声明面积的槽函数;

           之后,我们需要在Dialog.cpp中实例化该槽函数,就等同于在C++环境中对某函数进行阐述,里面有对应的变量逻辑,具体代码如下:

void Dialog::showArea()
{
    bool ok;//定义一个bool变量,变量名为ok;
    QString tempStr;
    QString valueStr = lineEdit1->text();
    int valueInt = valueStr.toInt(&ok);//toInt主要用于判断输入是否为整形,如果输入A-Za-z,结果则为false;
    QString valueaStr = lineEdit2->text();
    int valueaInt = valueaStr.toInt(&ok);

    double area=valueInt*valueaInt;
    label3->setText(tempStr.setNum(area));


}

          在输入框中,默认的是字符串形式,所以我们定义了 tempStr ,valueStr,valueaStr三个QString变量,然后利用toInt将字符串转换为整型,然后显示出结果;运行结果如下图:

          其实我们可以不用将数据的格式转来转去,我们可以利用 <QDoubleSpinBox>类进行操作,在构造函数中,只需要调用如下指令即可完成数据的读取任务;

  //QDoubleSpinBox *lab = new QDoubleSpinBox(this);
    //lab->value();直接获取它的值

       

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值