我有一个QDialog类型的子窗口,通过点击操作,如果在父窗口中打开这个子窗口,同时不关闭父窗口
时间: 2024-05-12 11:21:00 浏览: 113
,可以使用以下代码:
1. 在父窗口中创建子窗口对象:
```python
self.child_dialog = QDialog(self)
```
2. 在父窗口中添加打开子窗口的按钮,并在按钮的槽函数中显示子窗口:
```python
def open_child_dialog(self):
self.child_dialog.show()
```
3. 在子窗口中添加关闭按钮,并在按钮的槽函数中隐藏子窗口:
```python
def close_dialog(self):
self.hide()
```
注意:在父窗口中创建子窗口对象时,需要将父窗口作为参数传入,这样子窗口就成为了父窗口的子控件,关闭父窗口时,子窗口也会一起关闭。如果只是隐藏子窗口,可以使用`hide()`函数。
相关问题
qt 父窗口下QDialog的子窗口关闭时,让父窗口也关闭
如果你想让 QDialog 的关闭事件同时关闭父窗口,可以在 QDialog 的关闭事件中调用父窗口的关闭函数。示例代码如下:
```
void MyDialog::closeEvent(QCloseEvent *event)
{
QDialog::closeEvent(event);
this->parentWidget()->close();
}
```
这段代码在 QDialog 的关闭事件中,先调用 QDialog 的关闭事件,然后关闭父窗口。这样,当 QDialog 关闭时,父窗口也会关闭。如果需要判断父窗口是否为模态对话框,可以根据前面的代码进行修改。
qt 父窗口下QDialog的子窗口关闭时父窗口也会关闭
在 Qt 中,QDialog 是一个模态对话框,打开 QDialog 后,父窗口会被阻塞,直到 QDialog 关闭。如果 QDialog 关闭时会导致父窗口关闭,那么有可能是 QDialog 的父窗口设置不正确导致的。
一种可能的情况是 QDialog 的父窗口设置为了 mainwindow,而 mainwindow 在关闭时会关闭所有子窗口,因此 QDialog 的关闭也会导致 mainwindow 关闭。为了避免这种情况,应该将 QDialog 的父窗口设置为一个独立的窗口,而不是 mainwindow。
另外一种可能的情况是 QDialog 的关闭事件被重载了,关闭事件中调用了父窗口的关闭函数。如果 QDialog 关闭时确实需要关闭父窗口,可以在 QDialog 的关闭事件中调用父窗口的关闭函数,但是需要先判断 QDialog 是否为模态对话框,如果是模态对话框,应该先关闭 QDialog,然后再关闭父窗口。如果 QDialog 不是模态对话框,可以直接关闭父窗口。
示例代码如下:
```
void MyDialog::closeEvent(QCloseEvent *event)
{
if (this->parentWidget()->isModal()) {
QDialog::closeEvent(event);
this->parentWidget()->close();
} else {
this->parentWidget()->close();
QDialog::closeEvent(event);
}
}
```
这段代码在 QDialog 的关闭事件中判断了父窗口是否为模态对话框,如果是模态对话框,先关闭 QDialog,再关闭父窗口;否则,先关闭父窗口,再关闭 QDialog。
阅读全文