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不能关闭子窗口的主要内容,如果未能解决你的问题,请参考以下文章
PYQT5学习(13):QMidArea同时显示多个窗口,创建多个独立的窗口
showModalDialog/showModelessDialog实例,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口.关闭刷新父窗口