_ZNote_编程语言_Qt_信号槽实现_拖拽方式使用控件

  所谓的信号槽,实际上就是观察者模式. 当某个事件发生后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal). 这种发出信号是没有目的的,类似于广播.如果对象对这个信号感兴趣,它就会使用链接(connect)函数,意思是,用自己的一个函数(成为槽(slot)来处理信号.也就是说,当信号发出时,被链接的槽函数会自动被回掉.

  Qt 5 引入了信号槽的新语法:使用函数指针能够获得编译期的类型检查。 

有三种方式使用信号和槽

1,拖拽

2,右键

3,代码方式

------------------------------------

1,控件拖拽的方法

  a, 首先选择.ui文件

  

  

  b,上面菜单分别是离开模式和编辑模式.在不编辑的模式点离开状态

  

   c,拖入控件,选择编辑模式,在控件上拖动连接信号&槽

   

2,右键转到槽方式

  a, 拖入控件,如Button  

   

  b,选择信号

  

  c,自动生成代码中写入信息

//.h
private slots:
    void on_pushButton_clicked(bool checked);


//.cpp

void MainWindow::on_pushButton_clicked(bool checked)
{
     qDebug() << "Greeting message: ";
}

3,手动写代码方式

  a,头文件写入信息

private slots:
   // void newConnection();void acceptConnection();

  b,写入信号实现

void MainWindow::acceptConnection(){
   socket = server->nextPendingConnection();
   connect(socket,SIGNAL(readyRead()),this,SLOT(ReceiveData()));
}

  c,连接信号与槽

  //newConnection()用于当有客户端访问时发出信号,acceptConnection()信号处理函数
  connect(server,SIGNAL(newConnection()),this,SLOT(acceptConnection()));

总结:

connect()函数

///一般形式
connect(sender,signal,receiver,slot);

//第一个参数是发出信号的对象.
//第二个参数是发送对象发出的信号.
//第三个是接受信号对象.
//第四个是接收对象在接受到信号之后需要调用的函数.

也就是说,当sender 发出 signal信号之后,会自动调用receiver的slot函数.

从〇开始,回到〇
原文地址:https://www.cnblogs.com/zpsoe/p/7000744.html