qmidarea不能关闭子窗口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qmidarea不能关闭子窗口相关的知识,希望对你有一定的参考价值。

参考技术A 子窗口不会被删除,只是被隐藏了。如果想关闭窗口时立即删除,可以试试子类化QMdiSubWindow,重写closeEvent,当发生关闭事件时,使用QMdiArearemoveSubWindow移除子窗口。

退出主窗口时关闭子窗口

【中文标题】退出主窗口时关闭子窗口【英文标题】:Closing child window when exiting main 【发布时间】:2020-02-23 14:25:00 【问题描述】:

我确定,这是一个非常基本的事情,但我就是不明白为什么关闭主窗口不会关闭子窗口

from PyQt5 import uic
import sys

app = QApplication(sys.argv) #Main Window

Main = uic.loadUi("main.ui")
Child = uic.loadUi("child.ui")

def child():
    Child.show()

Main.button.pressed.connect(child)
Main.show()
app.exec_()

【问题讨论】:

【参考方案1】:

void QWidget::setParent(QWidget *parent)

将小部件的父级设置为父级,并重置窗口标志。


QWidget::setWindowFlags(Qt::WindowFlags 类型)

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import Qt


app = QApplication(sys.argv)      #Main Window

Main = uic.loadUi("main.ui")

Child = uic.loadUi("child.ui")

Child.setParent(Main)             # +++
Child.setWindowFlags(Qt.Window)   # +++


def child():
    Child.show()

Main.button.pressed.connect(child)

Main.show()
app.exec_()

【讨论】:

谢谢尼克!就是这个! @jtamasi 如果我的回答对您有所帮助,请不要忘记标记为正确,如果您不知道该怎么做,请查看***.com/tour

以上是关于qmidarea不能关闭子窗口的主要内容,如果未能解决你的问题,请参考以下文章

C# winform 父窗口子窗口按钮控制

PYQT5学习(13):QMidArea同时显示多个窗口,创建多个独立的窗口

子窗口关闭,父窗口如何刷新

在mfc中 为啥关闭子窗口连带把主窗口关闭了??

怎么实现父窗口打开子窗口,子窗口关闭后自动刷新父窗口?

showModalDialog/showModelessDialog实例,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口.关闭刷新父窗口