qt 窗口关闭后如何执行父窗口函数?
时间: 2023-07-19 10:34:53 浏览: 85
在Qt中,可以通过重写父窗口的closeEvent()函数来实现在子窗口关闭后执行父窗口函数的操作。具体实现步骤如下:
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. 在子窗口的closeEvent()函数中调用父窗口的doSomething()函数:
```
void ChildWindow::closeEvent(QCloseEvent *event)
{
parentWindow->doSomething();
event->accept();
}
```
这样,当子窗口关闭时,就会先执行父窗口的doSomething()函数。
相关问题
qt 窗口执行父窗口函数?
如果您想在Qt中的子窗口中执行父窗口的函数,可以通过以下步骤实现:
1. 在子窗口的构造函数中,将父窗口的指针存储在子窗口对象中,例如:
```c++
ChildWindow::ChildWindow(QWidget *parent) : QWidget(parent), m_parent(parent)
{
// ...
}
```
2. 然后,您可以通过存储的父窗口指针调用父窗口的函数,例如:
```c++
void ChildWindow::onButtonClicked()
{
m_parent->someFunction();
}
```
在上面的示例中,`onButtonClicked()` 是子窗口中的一个槽函数,当用户点击按钮时会触发。该函数使用存储的父窗口指针调用了父窗口的 `someFunction()` 函数。
注意:确保在父窗口中声明和实现 `someFunction()` 函数。
Qt 关闭窗口返回信号给父窗口
在Qt中,当一个子窗口关闭时,你可以发送一个信号给父窗口,通知它子窗口已经关闭。这可以通过Qt的信号-槽机制来实现。
在子窗口中,你需要定义一个信号,用于通知父窗口子窗口已经关闭。例如:
```cpp
class MyChildWindow : public QWidget
{
Q_OBJECT
signals:
void childWindowClosed();
};
```
在子窗口的关闭事件中,你需要发送这个信号:
```cpp
void MyChildWindow::closeEvent(QCloseEvent *event)
{
emit childWindowClosed();
QWidget::closeEvent(event);
}
```
在父窗口中,你需要连接这个信号到一个槽函数,用于处理子窗口关闭的事件。例如:
```cpp
void MyParentWindow::onChildWindowClosed()
{
// 处理子窗口关闭的事件
// ...
}
```
在父窗口创建子窗口的时候,你需要连接子窗口的childWindowClosed()信号到父窗口的onChildWindowClosed()槽函数:
```cpp
MyChildWindow *childWindow = new MyChildWindow(this);
connect(childWindow, SIGNAL(childWindowClosed()), this, SLOT(onChildWindowClosed()));
```
这样,当子窗口关闭时,它会发送childWindowClosed()信号,父窗口会接收到这个信号并调用onChildWindowClosed()槽函数来处理子窗口关闭的事件。