pyside6 使用qtreewidget 切換QstackedWidget的頁面 , ui界面使用QT desiger設計的界面,請實例化 ,加注釋
时间: 2024-09-06 12:08:03 浏览: 38
使用 qtdesigner+PySide6 设计的 GUI 应用程序
在使用PySide6(Qt for Python)设计应用程序时,你可以通过`QTreeWidget`和`QStackedWidget`组件来实现选项卡式界面。以下是一个简单的例子,展示了如何在使用Qt Designer设计的UI界面中,通过`QTreeWidget`的选择事件来切换`QStackedWidget`中的页面。
首先,假设你已经使用Qt Designer设计了一个UI界面,并保存为`design.ui`文件。这个文件会包含`QTreeWidget`和`QStackedWidget`组件。
然后,你需要在Python代码中加载这个UI,然后为`QTreeWidget`添加项目并连接选择事件到切换`QStackedWidget`页面的函数。以下是如何实现这个功能的代码示例:
```python
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QTreeWidget, QTreeWidgetItem, QStackedWidget, QWidget, QVBoxLayout
from PySide6.QtUiTools import QUiLoader
# 加载UI界面
class Window(QMainWindow):
def __init__(self):
super().__init__()
# 使用QtUiLoader加载design.ui文件
ui_file = "design.ui"
loader = QUiLoader()
self.window = loader.load(ui_file)
self.setCentralWidget(self.window)
# 获取QTreeWidget和QStackedWidget组件
self.tree = self.window.findChild(QTreeWidget, "QTreeWidget") # 假设对象名为"QTreeWidget"
self.stack = self.window.findChild(QStackedWidget, "QStackedWidget") # 假设对象名为"QStackedWidget"
# 为QTreeWidget添加项目
tree_item1 = QTreeWidgetItem(self.tree)
tree_item1.setText(0, "页面1")
tree_item2 = QTreeWidgetItem(self.tree)
tree_item2.setText(0, "页面2")
# 连接QTreeWidget的选择事件
self.tree.currentItemChanged.connect(self.change_page)
# 默认显示第一个页面
self.stack.setCurrentIndex(0)
def change_page(self, current, previous):
# 根据QTreeWidget当前选中的项目切换QStackedWidget页面
if current.text(0) == "页面1":
self.stack.setCurrentIndex(0)
elif current.text(0) == "页面2":
self.stack.setCurrentIndex(1)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())
```
在这个例子中,我们首先加载了UI界面,并获取了`QTreeWidget`和`QStackedWidget`组件。然后,我们为`QTreeWidget`添加了两个项目,并将`currentItemChanged`信号连接到了`change_page`方法。`change_page`方法会根据当前选中的`QTreeWidget`项目来切换`QStackedWidget`的页面。
确保将`design.ui`文件放在正确的路径下,以便`QUiLoader`能够找到并加载它。
阅读全文