如何将QMainWindow的内容显示在QWindow上
时间: 2023-06-12 13:05:20 浏览: 49
可以通过在QMainWindow中嵌入一个QWidget,然后将QWidget设置为QWindow的parent来实现在QWindow上显示QMainWindow的内容。
以下是一个示例代码:
```python
from PyQt5.QtWidgets import QMainWindow, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtGui import QWindow, QPainter
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个QWidget
widget = QWidget(self)
layout = QVBoxLayout(widget)
# 在QWidget中添加一个QPushButton
button = QPushButton('Hello World', widget)
layout.addWidget(button)
# 将QWidget设置为QWindow的parent
self.window = QWindow()
self.window.setParent(self)
self.window.setTitle('My Window')
self.window.resize(320, 240)
self.window.setVisible(True)
self.window.setFlags(Qt.FramelessWindowHint | Qt.Window)
self.window.content = widget
def paintEvent(self, event):
if self.window.content:
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
self.window.content.render(painter, QPoint(), Qt.IgnoreAspectRatio)
```
这个示例中,我们创建了一个QMainWindow并在其中嵌入了一个QPushButton。然后我们创建了一个QWindow,并将QWidget设置为其parent。最后,我们重写了QMainWindow的paintEvent,并在其中将QWidget绘制在QWindow上。