qt 窗口执行父窗口函数?
时间: 2023-07-13 11:41:06 浏览: 88
在Qt中,可以通过信号和槽机制来实现窗口间的通信,从而在子窗口中执行父窗口函数。具体实现步骤如下:
1. 在父窗口的头文件中声明一个需要执行的函数,例如:
```
public slots:
void doSomething();
```
2. 在父窗口的源文件中实现doSomething()函数的内容,例如:
```
void MainWindow::doSomething()
{
qDebug() << "Parent window function executed.";
}
```
3. 在子窗口的头文件中声明一个指向父窗口的指针:
```
MainWindow *parentWindow;
```
4. 在子窗口的构造函数中将这个指针指向父窗口:
```
ChildWindow::ChildWindow(MainWindow *parent)
: QDialog(parent)
{
parentWindow = parent;
}
```
5. 在子窗口中定义一个信号,用来触发父窗口的doSomething()函数:
```
signals:
void signalDoSomething();
```
6. 在子窗口中定义一个槽函数,用来接收信号并执行父窗口的doSomething()函数:
```
private slots:
void onSignalDoSomething()
{
parentWindow->doSomething();
}
```
7. 在子窗口的closeEvent()函数中发射信号:
```
void ChildWindow::closeEvent(QCloseEvent *event)
{
emit signalDoSomething();
event->accept();
}
```
8. 在父窗口中连接子窗口的信号和槽:
```
ChildWindow *childWindow = new ChildWindow(this);
connect(childWindow, &ChildWindow::signalDoSomething, this, &MainWindow::doSomething);
```
这样,当子窗口关闭时,就会发射信号,父窗口收到信号后就会执行doSomething()函数。
阅读全文