QDialog显示时关闭其他QDialog窗口
时间: 2023-08-27 21:05:01 浏览: 96
要在显示 QDialog 时关闭其他 QDialog 窗口,可以使用以下步骤:
1. 在主窗口或应用程序中创建一个列表,用于存储所有 QDialog 窗口的指针。
2. 在创建 QDialog 窗口时,将其指针添加到该列表中。
3. 在 QDialog 窗口的 closeEvent() 函数中,从列表中删除该 QDialog 窗口的指针。
4. 在要显示 QDialog 窗口的函数中,遍历该列表并关闭所有其他 QDialog 窗口。
以下是示例代码:
```python
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.dialogs = []
def create_dialog(self):
dialog = QDialog(self)
self.dialogs.append(dialog)
dialog.setAttribute(Qt.WA_DeleteOnClose) # 在关闭时自动删除 QDialog 窗口
dialog.closeEvent = lambda event: self.dialogs.remove(dialog) # 从列表中删除 QDialog 窗口的指针
dialog.show()
def show_dialog(self):
for dialog in self.dialogs:
dialog.close()
self.create_dialog()
```
在上面的代码中,create_dialog() 函数用于创建 QDialog 窗口并将其指针添加到列表中,show_dialog() 函数用于关闭所有其他 QDialog 窗口并显示新的 QDialog 窗口。在 QDialog 窗口的 closeEvent() 函数中,我们从列表中删除该 QDialog 窗口的指针,并将其设置为在关闭时自动删除。
阅读全文