Qt子窗口部件提升为类后,该类的多个已创建的子窗口如何接收父窗口的信号
时间: 2024-02-01 13:14:52 浏览: 73
在Qt中,子窗口可以通过信号和槽机制与父窗口进行通信。当你将子窗口部件提升为一个类之后,你可以在该类的头文件中声明一个信号,然后在父窗口中连接该信号到一个槽函数。
在子窗口类的头文件中声明信号:
```
class MySubWindow : public QWidget
{
Q_OBJECT
public:
explicit MySubWindow(QWidget *parent = nullptr);
signals:
void mySignal(); // 声明一个信号
private:
Ui::MySubWindow *ui;
};
```
在子窗口类的实现文件中调用信号:
```
MySubWindow::MySubWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::MySubWindow)
{
ui->setupUi(this);
// 在子窗口中触发信号
emit mySignal();
}
```
在父窗口中连接信号到槽函数:
```
MyMainWindow::MyMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MyMainWindow)
{
ui->setupUi(this);
// 创建多个子窗口
MySubWindow *subWindow1 = new MySubWindow(this);
MySubWindow *subWindow2 = new MySubWindow(this);
MySubWindow *subWindow3 = new MySubWindow(this);
// 连接子窗口的信号到槽函数
connect(subWindow1, &MySubWindow::mySignal, this, &MyMainWindow::onMySignalReceived);
connect(subWindow2, &MySubWindow::mySignal, this, &MyMainWindow::onMySignalReceived);
connect(subWindow3, &MySubWindow::mySignal, this, &MyMainWindow::onMySignalReceived);
}
void MyMainWindow::onMySignalReceived()
{
// 处理子窗口的信号
}
```
这样,当任意一个子窗口触发`mySignal()`信号时,父窗口中的`onMySignalReceived()`槽函数都会被调用。
阅读全文