QT中的信号和槽

信号和槽

信号与槽(Signal & Slot)是 Qt 编程的基础,也是 Qt 的一大创新。因为有了信号与槽的编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。它可以让应用程序编程人员把这些互不了解的对象绑定在一起。

信号(Signal)

信号(Signal)就是在特定情况下被发射的事件,例如 PushButton 最常见的信号就是鼠标单击时发射的 clicked () 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的 CurrentIndexChanged () 信号。
GUI 程序设计的主要内容就是对界面上各组件的信号的响应,只需要知道什么情况下发射哪些信号,合理地去响应和处理这些信号就可以了。

槽(Slot)

就是对信号响应的函数。槽就是一个函数,与一般的 C++ 函数是一样的,可以定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。
信号与槽关联是用 QObject::connect () 函数实现的,其基本格式是:
QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
参数 1、信号的发送者
参数 2、发送的信号
参数 3、信号的接收者
参数 4、处理函数(槽函数)

现在我们在 Widget 类中加上一个 QPushButton 按键,这时我们在 QT 程序中点击这个按键控件是没有反应的,现在我们希望点击该按键,可以将窗口关闭,那么我们就得给它们建立信号和槽的联系:

首先是 QPushButton 类:在它的父类中,我们发现它有这么一个函数:void checked (),这就是一个信号,点击后触发的信号;

接着是 Widget 类:在这个类中也有这么一个函数:bool close (),这就是槽,也可以理解为响应函数。

当有了信号和槽,我们就可以建立起它们之间的联系了:

connect(btn,&QPushButton::clicked,this,&Widget::close);//btn是一个QPushButton对象

注意信号和槽是需要在前面加上‘&’的。

在我们运行后,点击该按钮,就可以关闭窗口了

本来没有连接的两个对象,连接在一起。本来点击按钮,跟关闭窗口没有联系,我们可以同 connect 让他们建立起联系。

作者: KevinSolomon
https://lolife.top/?p=631
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇