QT 5.12信号和槽
时间: 2023-11-28 10:09:03 浏览: 74
QT 5.12版本中信号和槽的使用方式有所改变。在以前的版本中,我们可以使用connect函数来连接信号和槽,例如connect(sender, SIGNAL(signal()), receiver, SLOT(slot()))。但在QT 5.12版本中,SIGNAL和SLOT宏已经不再需要使用了。
在QT 5.12版本中,我们可以使用新的语法直接连接信号和槽。例如,如果我们有一个按钮m_applyBtn,并且想在按钮按下时执行一个槽函数onApplyBtnPressedSlt,我们可以这样做:
```cpp
connect(m_applyBtn, &QPushButton::pressed, this, &MyClass::onApplyBtnPressedSlt);
```
这里,&QPushButton::pressed表示按钮按下的信号,this表示接收信号的对象(一般是当前类的实例),&MyClass::onApplyBtnPressedSlt表示要执行的槽函数。
同样地,如果我们有另一个按钮m_backBtn,并且想在按钮按下时执行另一个槽函数onBackBtnPressedSlt,我们可以使用以下代码进行连接:
```cpp
connect(m_backBtn, &QPushButton::pressed, this, &MyClass::onBackBtnPressedSlt);
```
这样,按钮的pressed信号就会触发相应的槽函数。
需要注意的是,在新的语法中,信号和槽的参数类型必须一致。如果信号和槽的参数不一致,可以使用QOverload和QMetaObject::Connection来解决这个问题。但这超出了本次讨论的范围。
总结起来,QT 5.12版本中,我们可以使用新的语法直接连接信号和槽,不再需要使用SIGNAL和SLOT宏。使用新的语法可以提供更好的类型安全性和编译时错误检查。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [QT5.12中的信号和槽问题](https://blog.csdn.net/bxlover007/article/details/116204430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [QT C++学习代码案例](https://download.csdn.net/download/m0_73878864/88259441)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文