QDockwidget设置成和Qtabwidget效果一样
时间: 2023-11-29 21:06:30 浏览: 114
QTabWidget(选项卡窗口)
将QDockWidget和QTabWidget放在同一个布局中,并将QDockWidget的标题栏隐藏,然后在QTabWidget的tabBarClicked信号中设置当前显示的QWidget为QDockWidget即可实现QDockWidget和QTabWidget效果一样的效果。代码示例如下:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEdit, QTabWidget, QWidget, QVBoxLayout, QHBoxLayout
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建QTextEdit控件
textEdit1 = QTextEdit()
textEdit2 = QTextEdit()
textEdit3 = QTextEdit()
# 创建QDockWidget控件,并将标题栏隐藏
dockWidget = QDockWidget("Dock Widget", self)
dockWidget.setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable)
dockWidget.setTitleBarWidget(QWidget())
# 将QTextEdit控件添加到QDockWidget中
dockWidget.setWidget(textEdit1)
# 创建QTabWidget控件,并将QTextEdit控件添加到其中
tabWidget = QTabWidget(self)
tabWidget.addTab(textEdit2, "Tab 1")
tabWidget.addTab(textEdit3, "Tab 2")
# 创建布局,并将QDockWidget和QTabWidget添加到其中
layout = QHBoxLayout()
layout.addWidget(tabWidget)
layout.addWidget(dockWidget)
# 创建QWidget控件,并将布局添加到其中
widget = QWidget(self)
widget.setLayout(layout)
# 设置QWidget控件为主窗口的中心部件
self.setCentralWidget(widget)
# 连接QTabWidget的tabBarClicked信号到槽函数
tabWidget.tabBarClicked.connect(self.onTabBarClicked)
def onTabBarClicked(self, index):
# 将当前显示的QWidget设置为QDockWidget
self.centralWidget().layout().itemAt(1).widget().raise_()
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
运行上述代码,即可看到QDockWidget和QTabWidget效果一样的效果。
阅读全文