1.4 使用代码方式创建一个圆面积的计算程式

我们在1.3节介绍了如何使用Qt的UI界面设计器如何来创建一个简单的圆的面积的计算程式,在本节,我将介绍如何使用纯代码的方式(即:不依赖于.ui文件)来创建一个圆面积的计算程式

1.4 使用纯代码方式创建圆的面积计算程式

  1.4.1 首先创建一个新的工程(这个在上一节已经说过,这里不再赘述)

  

  1.4.2 给工程命名

  

  1.4.3 设置类名(这里注意要取消勾选"创建.ui文件"),后面的步骤都是下一步,然后点完成即可

  

  

  

  1.4.4 工程建好后如下图所示

1.5 接下来,我们就需要去在circlearea.h这里面去增加一些成员了(我们上一节整个页面至少有4个控件,分别是两个显示的QLabel,一个按钮QPushButton和一个输入部件QLineEdit)

  1.5.1 在circleara.h中添加头文件和对应的成员

  1.5.2 在circlearea.cpp中new出这些成员,然后使用这些成员都有的move方法将这些控件分布到合适的位置

  1.5.3 槽函数的连接

  在Qt中,我们使用connect函数来进行信号和槽的连接,connect函数的原型如下(其实connect函数有多种重载形式,这只是其中一种):

connect(
    const typename QtPrivate::FunctionPointer<Func1>::Object *sender,//信号的发送者
     Func1 signal, //信号函数
    const QObject *context,//信号的接收者 
    Func2 slot,//信号接受者接收到信号后会做出的行为(信号接收者的槽函数)
    ) 

  那么在我们这个例子中,我们需要手动实现一个槽函数(这个槽函数就是和处理计算圆的面积的逻辑有关的槽函数),我们需要在circlearea.h中加入如下代码

  为什么我们不需要去实现信号函数?因为我们的按钮Button有缺省的信号函数了,比如clicked()信号,这个信号我们可以直接拿过来用

  在circlearea.h中声明这个槽函数

     在circlearea.cpp实现这个槽函数 

    运行结果:

  总结:

    我们这次和上次的项目分别从纯代码的方式和UI界面的方式编写了一个简单的计算圆面积的案例,我们初步认识到了Qt的程序的基本开发流程,也初步对QLabel,QPushButton,QLineEdit这几种基本的控件有了一点点的认识;另外,我们对Qt中的重要概念:信号和槽有了初步的理解,实际上信号和槽可以理解为,假设我给你打电话,告诉你要帮我去某个地方做一件事情,你在电话那头听到了我让你做什么事情之后,你便会去做(在这个过程中,我指示你的事情就是信号,而让你做的事情就是槽,而电话就是连接我们两个人沟通的一个桥梁[在代码中就表现就是connect函数])

  

  注意事项:

  1.如果使用代码的方式创建一个类(如果我要让这个类能够支持信号和槽机制,那么就必须在对应的类中声明一个叫做Q_OBJECT的宏,实际上这个宏就是替换了某些内容然后让这个类支持上信号和槽的一些特性(这个宏必须放在类的私有区域中)

  2.Q_OBJECT宏的作用是用于启动Qt的一些元对象系统的一些特性,而这些特性必须要以下条件才可以实现:

    2.1 任何想要使用Qt的元对象特性的类都必须基于QObject类(这也是一切Qt类的基类)

    2.2 Q_OBJECT宏必须要在类的私有区域中声明

    2.3 元对象编译器(MOC)为任何基于QObject类的派生类提供必要的代码实现

附录:本节的代码文件

https://files.cnblogs.com/files/blogs/792763/CircleArea_BaseOnCodes.zip?t=1688482550&download=true

  

 

 

 

  

  

  

posted @ 2023-07-04 22:56  蜡笔小新Pointer  阅读(199)  评论(0)    收藏  举报