connect函数的探究

首先是对于头文件三个定义的理解

#ifndef  。。。//如果没有定义。。。
#define 。。。//定义。。。
#endif              //结束如果
这个用法主要是在头文件中,主要是为了防止类重复的include,所以在类的头文件之前加上前面两个,用类名替代。。。,在最后加上最后一句#endif。

其次对于类的作用域的理解

类可以被看成是一组有名成员的集合,类X的成员m具有类作用域,对m的访问方式有如下3种。

(1)如果在X的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以直接访问成员m。也就是说m在这样的函数中都起作用。

(2)通过表达式X.m或者X::m。这正是程序中访问对象成员的最基本方法。X::m的方式用于访问类的静态成员。

(3)通过ptr->m这样的表达式,其中ptr为指向X类的一个对象的指针。

然后是namespace命名空间作用域的理解

命名空间作用域是为了防止不同模块中的类和函数之间发生重名而引发错误而出现的!命名空间起到的就是消除歧义的作用!

命名空间的语法形式如下:

namespace 命名空间名{

命名空间内的各种声明(函数声明、类声明、。。。)

}

一个命名空间确定了一个命名空间作用域,凡是在该命名空间之内声明的、不属于前面所述各个作用域的标识符,都属于该命名空间作用域。

在命名空间内部可以直接引用当前命名空间中声明的标识符,如果需要引用其他命名空间的标识符,需要使用下面的语法:

命名空间名::标识符名

例如:

namespace SomeNs{

    class SomeClass{...};

}

如果需要引用类名SomeClass或函数名someFunc,需要使用下面的方式:

SomeNs::SomeClass obj1;//声明一个SomeNs::SomeClass型的对象obj1

例如connect中:

namespace Ui {

class FatherDialog;
}
 
 

在私有成员中调用:

private:

    Ui::FatherDialog *ui;
 
 
对于slots(槽)的理解:
public slots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。
protected slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。
private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。
本例中是:
private slots:
    void on_pushButton_clicked();
    void showChildDialog();
也就是声明了两个槽:
对于explicit的理解:
关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。
 
 
 
 

对于QMessageBox的理解:

在Qt中经常需要弹出窗口,QMessageBox可以实现此功能,一共有三种窗口,information, question, 和 warning,critical, about分别对应感叹号,问号和叉号等等,使用方法很简单,一共有三个参数,第一个是父窗口句柄,剩下两个分别为窗口名称和显示内容,显示内容为QString类型。

现在开始分析主程序:

#include "fatherdialog.h"

#include <QApplication>
 
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    FatherDialog w;
    w.show();
 
 
    return a.exec();
}

首先调用fatherdialog.h这个文件

程序第二行声明FatherDialog的一个对象w;

第3行就是将w展示出来

fatherdialog.h里主要是声明了命名空间Ui里的类FatherDialog,然后是声明了两个槽on_pushButton_clicked(),showChildDialog(),

以及其构造函数FatherDialog(QWidget*parent = 0);

定义了Ui::FatherDialog的指针对象ui

ui的内容主要是  QObject::connect(ui->childB,&QPushButton::clicked,this&FatherDialog::showChildDialog);

这里需要理解下connect:connect,是QT中的连接函数,将信号发送者sender对象中的信号signal与接受者receiver中的member槽函数联系起来。

然后就是一个析构函数删除对象ui;

接着是两个槽的作用:

on_pushButton_clicked()的作用弹出一个框:标题:提示 内容:请告诉我为什么 按钮:OK

showChildDialog()的作用,声明一个指针对象d,并且将其展示出来;

以上就是我对connect以及相关代码的一点粗略的理解.



猜你喜欢

转载自blog.csdn.net/xihairanfeng/article/details/72897651
今日推荐