我是靠谱客的博主 时尚月亮,最近开发中收集的这篇文章主要介绍Qt之信号与槽(附带对MFC中消息的理解),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        无论是Qt中的信号与槽还是MFC中的消息,说白了都是命令与执行的关系。我下达命令(发出信号,或者消息),特定的人(槽或者消息函数)去执行。我觉得这样会比较好理解。信号与槽这个概念里,我觉得比较容易理解出差错或者是理解不全的地方是,谁去执行与谁发出命令可以是另个不同的对象,但是对命令的接收(connect)必须在执行的那个对象里面进行绑定。信号可以绑定多个槽,槽也可以和多个信号绑定。换句话说,我发出一条命令,可以有很多人去执行,执行的方式也可以不同。同样的同一个执行方式,也可以有不同的人发送不同的命令去让他执行。举个例子:父界面要给子界面发送文字消息,很好做,直接在父类里面用父类发出的信号,去连接子类里面的槽。

Father
{
public:
    Father()
    {       
         connect(this,SIGNAL(SendToChild(string)),c,SLOT(GetFromFather(string)));//发出命令,子类执行命令
         connect(c,SIGNAL(SendToFather(string)),this,SLOT(GetFromChild(string)));    //子类发出命令,父类执行命令
    }
    ~Father();
public:
    Child* c;
signals:
    void SendToChild(string);
public slots:
    void GetFromChild(string s)
    {
        println("child:%s",s);
    }
public:
    void SendMessageToChild()
    {
         emit(SendToChild("Hello ,I am Father."));//emit为发出一个信号。
    }
};
class Child 
{
public:
    Child;
    ~Child();
public:
   void SendMessageToFather()
   {
        emit(SendToFather("Hello, I am Child."));
   }
public slots:
    void GetFromFather(string s)
signals:
    void SendToFather(string);
};


上面是一个很简单的例子,类之间的信号与槽的连接使用。当然也可以在Child类中进行connect连接信号与槽,这样就更加清晰了。各自使用connect时,需要注意明确谁发出信号,谁接收。

MFC中的消息机制道理其实是一样的,只不过是通过定义消息响应及消息的编号,在需要发送消息的地方用SendMessage进行消息发送。

具体的工作原理细节,还是要去实现一下,自己体会一下。



最后

以上就是时尚月亮为你收集整理的Qt之信号与槽(附带对MFC中消息的理解)的全部内容,希望文章能够帮你解决Qt之信号与槽(附带对MFC中消息的理解)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部