• 16978阅读
  • 8回复

[讨论]求教,子窗口关闭事件如何通知父窗口,然后父窗口有相应动作! [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 楼主  发表于: 2015-12-22
我点击CheckBox弹出非模态窗口。然后关闭子窗口但是CheckBox的钩号仍然存在。怎样关闭子窗口同时让钩号取消。求教。。。。。。开发环境用的qt creator
离线lemonzll

只看该作者 1楼 发表于: 2015-12-22
关联子窗口的destroyed信号。

只看该作者 2楼 发表于: 2015-12-23
回 lemonzll 的帖子
lemonzll:关联子窗口的destroyed信号。 (2015-12-22 17:44) 

我刚学,不知道怎么关联子窗口的信号,具体在哪个文件里边写哪些内容,你能大体说一下吗?谢谢啊
离线蚂蚁power

只看该作者 3楼 发表于: 2015-12-23
在主窗口中

子窗口类 对象a = new 子窗口类;
connect(对象a, SIGNAL(子类中的信号), this, SLOT(父类中的槽函数);

这样 点击关闭子窗口时 发送信号,父窗口就会受到。然后就可以了。如果信号不懂 你可以去网上看信号的资料
离线lemonzll

只看该作者 4楼 发表于: 2015-12-23
看你子窗口是怎么建立的,如果是3楼写的那种用new来动态创建的窗口,需要对子窗口设置setAttribute(Qt::WA_DeleteOnClose)属性,这样点窗口关闭按钮时动态分配的窗口会自动删除,会产生destroyed信号。如果是在栈上建立的,直接关联destroyed信号就可以
离线lemonzll

只看该作者 5楼 发表于: 2015-12-23
你是非模态窗口,估计是用new动态分配的。那大概写在创建窗口那里。
window = new Window(this); //这是你的子窗口
window->setAttribute(Qt::WA_DeleteOnClose); //设置窗口关闭时自动删除
connect(window, SIGNAL(destroyed()), this, SLOT(...)); //设置对应的信号关联,在slot中设置checkbox的状态
window->show(); //显示子窗口

只看该作者 6楼 发表于: 2015-12-23
回 lemonzll 的帖子
lemonzll:你是非模态窗口,估计是用new动态分配的。那大概写在创建窗口那里。
window = new Window(this); //这是你的子窗口
window->setAttribute(Qt::WA_DeleteOnClose); //设置窗口关闭时自动删除
connect(window, SIGNAL(destroyed()), this, SLOT(...)); //设置对应的信号关联,在s .. (2015-12-23 11:20) 

问题解决了  谢谢啊  纠结好久了

只看该作者 7楼 发表于: 2015-12-23
回 蚂蚁power 的帖子
蚂蚁power:在主窗口中

子窗口类 对象a = new 子窗口类;
connect(对象a, SIGNAL(子类中的信号), this, SLOT(父类中的槽函数);

....... (2015-12-23 10:08) 

试过了 需要设置下窗口的属性  不过也谢谢你。。。
离线unimat_tom

只看该作者 8楼 发表于: 2016-05-24
实际设置子窗口DeleteOnClosed属性后,在关闭子窗口时,父窗口也一起关闭了。
重载了eventClose(){emit SIGNAL} 给父窗口是可以的。
快速回复
限100 字节
 
上一个 下一个