QT按键事件

QT中的按键事件:

新建一个干净的工程

首先在mainwindow.cpp中加入QMessageBox.h

1.在MainWindow 类的头文件中添加事件处理函数的声明,这块要用slots宏声明这是一个信号槽的响应函数,到时候有信号发生就会在信号槽中找到这个信号

public slots:

void click_func();

2.在MainWindows类的构造函数中连接信号和信号处理函数

connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(click_func()));

3.在MainWindow类中定义func函数的函数体

void MainWindow::click_func()

{

QMessageBox::information(NULL, "Tiltle", "Content", QMessageBox::Yes|QMessage::No, QMessageBox::Yes);

}

完毕

=====================================================================

1)ClickButton()了宏声明中我们加入 slots,此宏表示信号槽机制中响应函数,称之为槽。

注意这里如果不加slots宏,编译连接一点问题都没有,但是连接信号和槽就会失败,返回 false。

2)connect函数,把一个信号和槽连接起来。

bool connect(sender, SIGNAL(signal), receiver, SLOT(slot));

sender 发送者,本例中就是pushButton对象

signal 信号,本例中是指发送对象的clicked()信号

receiver接收者,本例中就是MainWindow对象

slot 槽,本例中就是我们写的click_func函数

关于信号和槽

A.一个信号可个以连接多槽,注意这种情况下,各个槽的调用顺序是不确定的。

B.多个信号也可以连接一个槽。

C.一个信号可以连接另一个信号 connect(edit, SIGNAL(textChanged(QString &)), this, SIGNAL(updateRecord(QString &)));

D.连接是可以被移除的 disconnect(lcd, SIGNAL(overflow()), this, SLOT(xxx())); 当删除对象的时候,qt会自动移除和这个对象所有的连接

E. 建立连接的时候,参数是直接传递到槽(或者另一个信号)的。

F.把信号连接到槽,他们的参数类型必须相同,但有个例外,信号参数比槽参数多,多余的参数会被忽略掉。注意这个参数不要带参数名,仅声明即可。

G.注意connect()函数其实是在QObject中实现的,并不局限于GUI,因此,只要我们继承QObject类,就可以使用信号槽机制了

H.一定要注意不要产生递归,否则程序马上会栈溢出崩溃!

ps. 发射信号用 emit func(param);  func函数的声明类似这样:signals: void func(int param);   注意他没有函数体。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值