qt connect用法
时间: 2023-10-31 18:06:43 浏览: 607
Qt的connect函数是用于建立信号和槽之间的连接关系,用于实现对象间的通信。它的基本用法是:
```cpp
QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
```
其中,sender是发送信号的对象,signal是发送的信号,receiver是接收信号的对象,slot是接收信号的槽函数。
具体用法如下:
1. 定义发送信号的类,例如一个按钮类 `QPushButton`。
2. 定义接收信号的类,例如一个窗口类 `QMainWindow`。
3. 在接收信号的类中定义槽函数,例如一个槽函数 `onButtonClicked()`。
4. 在创建对象时,使用`connect`函数建立信号和槽之间的连接。
示例代码如下:
```cpp
// sender.h
class Sender : public QObject
{
Q_OBJECT
public:
explicit Sender(QObject *parent = nullptr);
signals:
void signal();
public:
void sendSignal();
};
// sender.cpp
Sender::Sender(QObject *parent) : QObject(parent)
{
}
void Sender::sendSignal()
{
emit signal();
}
```
```cpp
// receiver.h
class Receiver : public QMainWindow
{
Q_OBJECT
public:
explicit Receiver(QWidget *parent = nullptr);
public slots:
void onSignalReceived();
};
// receiver.cpp
Receiver::Receiver(QWidget *parent) : QMainWindow(parent)
{
}
void Receiver::onSignalReceived()
{
qDebug() << "Signal received";
}
```
```cpp
// main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Sender sender;
Receiver receiver;
QObject::connect(&sender, SIGNAL(signal()), &receiver, SLOT(onSignalReceived()));
sender.sendSignal();
return a.exec();
}
```
这个示例中,当点击按钮时,`Sender`对象会发送一个信号`signal()`,`Receiver`对象会接收到这个信号,并调用`onSignalReceived()`槽函数。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)