QT 软键盘的实现 ---connect()方式

目录

介绍

1 在nfasong 中定义信号(和定义变量一样):

2 定义infoSend(const QString &)

3在mianwidow中创建net_set_ui对象

4 槽函数声明及定义:

5 在mainWindow中写connect()函数:(信号与槽的连接)

 运行结果:

  • 介绍

首先介绍一下connect()函数,她是信号与槽机制的核心,以前理解得太肤浅了

  • 误会一:以为只是ui上面的控件可以发信号。
  • 误会二:信号是自己QT自己定义好的。自己无法写信号;
  • 误会三:connect()中的是被动的程序检测到的,自己没法主动发送。

以上纯属个人偏见。

 今天百度到了一篇文章,测地的打破了我的个人偏见:http://blog.sina.com.cn/s/blog_511cc1eb0100t00i.html

真的写得非常的好,我模仿他写了我的程序,我的程序涉及两个界面:

mainwindow(接收数据做显示)界面和net_set_ui(产生数据并发送数据),下面介绍我的步骤:

  • 1 在nfasong 中定义信号(和定义变量一样):

signals:
    void infoSend(const QString &); //定义消息发送信号

QT 软键盘的实现 ---connect()方式_第1张图片

  • 2 定义infoSend(const QString &)

void net_set_ui::emit_signal_infosend()
{
     qDebug()<<"发送了"<

当对象改变其状态时,信号就由该对象发射 (emit) 出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。

你可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,甚至于将一个信号与另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。总之,信号与槽构造了一个强大的部件编程机制。

  • 3在mianwidow中创建net_set_ui对象

 net_set_ui *d = new net_set_ui  ;
  • 4 槽函数声明及定义:

 void infoRecv(const QString &str);
  • 定义方式:
void MainWindow::infoRecv(const QString &str)
{
     qDebug()<<"接收到了:"<passwd->setText(str);
}

 

  • 5 在mainWindow中写connect()函数:(信号与槽的连接)

connect(d,SIGNAL(infoSend(const QString &)), this,SLOT(infoRecv(const QString &)));

QT 软键盘的实现 ---connect()方式_第2张图片

 

  •  运行结果:

一个动态的键盘就做好了。。。

QT 软键盘的实现 ---connect()方式_第3张图片 

你可能感兴趣的:(QT)