QDialog 弹出时,窗口没有被激活??
时间: 2024-04-30 16:19:19 浏览: 128
QDialog弹出时,如果窗口没有被激活,可能是因为它没有获取焦点。可以在弹出对话框前调用`setFocus()`或`setFocus(Qt::ActiveWindowFocusReason)`方法,将焦点设置为当前窗口。
另外,如果对话框被其他窗口遮挡,可以使用`raise()`方法将其置于最前面。如果需要将其放在父窗口的中心位置,可以使用`move()`方法和`center()`函数进行设置。
以下是一个示例代码:
```python
from PyQt5.QtWidgets import QDialog, QDesktopWidget
class MyDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("My Dialog")
def showEvent(self, event):
super().showEvent(event)
self.setFocus(Qt.ActiveWindowFocusReason)
self.raise_()
self.move(QApplication.desktop().screen().rect().center() - self.rect().center())
```
在这个例子中,我们在`showEvent()`方法中设置了焦点、将对话框置于最前面、并将其移动到屏幕中心。这样,即使对话框被其他窗口遮挡,也可以确保它能够被用户看到并与之交互。
阅读全文