关闭父窗口同时关闭子窗口问题

本文介绍了一种在父页面通过JavaScript控制子窗口的方法,包括声明全局变量存储子窗口引用及在父页面关闭时同步关闭子窗口的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决思路:在父页面的js中声明一个全局变量,打开子窗口是将子窗口赋值给此变量,在父页面退出时,关闭子页面

父页面的js代码

<script language="javascript" type="text/javascript" > 

 //声明变量

var win;

//父窗口的关闭代码
        function closeSubwin(){
          if (win != null)
          {
              if(win.closed) {
                   
              }
              else{
                win.close();
              }
          }
        }

//打开子窗口代码

function openSubWin(){

win=window.open("..........");

win.focus();

}

</script>

在父页面的body中添加如下代码

<body onunload="closeSubwin();" >

 

在Qt框架中,关闭父窗口关闭窗口通常涉及到几个关键的概念,如父窗口关系、信号与槽机制以及事件处理等。具体操作方法如下: 1. 在创建窗口,通常会设置窗口父窗口。这可以通过在创建窗口对象传递父窗口对象来实现。例如:`ChildWindow *child = new ChildWindow(parentWindow);` 这样,窗口会自动成为父窗口窗口。 2. 利用Qt的信号与槽机制,当父窗口接收到关闭事件,可以发出一个信号,窗口连接到这个信号上,并在信号触发执行关闭操作。 3. 可以重写父窗口的`closeEvent(QCloseEvent *event)`函数,在其中调用窗口的`close()`方法来关闭窗口同时调用`event->accept()`接受关闭事件,确保父窗口也会关闭。 示例代码如下: ```cpp class ParentWindow : public QMainWindow { Q_OBJECT public: ParentWindow(); void closeEvent(QCloseEvent *event) override; }; class ChildWindow : public QWidget { Q_OBJECT public: ChildWindow(ParentWindow *parent); }; ChildWindow::ChildWindow(ParentWindow *parent) { // 初始化窗口代码 // ... } ParentWindow::ParentWindow() { // 初始化父窗口代码 // ... ChildWindow *child = new ChildWindow(this); // 设置窗口父窗口为当前父窗口 } void ParentWindow::closeEvent(QCloseEvent *event) { // 关闭所有窗口 foreach (QWidget *widget, QApplication::topLevelWidgets()) { if (dynamic_cast<ChildWindow *>(widget) && widget != this) { widget->close(); } } QMainWindow::closeEvent(event); // 调用基类的closeEvent确保父窗口关闭 } ``` 在上面的代码中,`ParentWindow`类重写了`closeEvent`函数,在接收到关闭事件会遍历所有顶级窗口,找到所有的窗口关闭它们。同时,`ChildWindow`类的构造函数中将自己设置为`ParentWindow`的窗口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值