forked from Rowland/EG
1.修改属性面板布局
This commit is contained in:
parent
4f75cfb1a9
commit
05dec0d62d
2
.idea/AugmentWebviewStateStore.xml
generated
2
.idea/AugmentWebviewStateStore.xml
generated
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -12,7 +12,7 @@ from PyQt5.QtWidgets import (QApplication, QMainWindow, QMenuBar, QMenu, QAction
|
||||
QDockWidget, QTreeWidget, QListWidget, QWidget, QVBoxLayout, QTreeWidgetItem,
|
||||
QLabel, QLineEdit, QFormLayout, QDoubleSpinBox, QScrollArea,
|
||||
QFileSystemModel, QButtonGroup, QToolButton, QPushButton, QHBoxLayout,
|
||||
QComboBox, QGroupBox, QInputDialog, QFileDialog, QMessageBox, QDesktopWidget)
|
||||
QComboBox, QGroupBox, QInputDialog, QFileDialog, QMessageBox, QDesktopWidget, QGridLayout)
|
||||
from PyQt5.QtCore import Qt, QDir, QTimer
|
||||
from ui.widgets import CustomPanda3DWidget, CustomFileView, CustomTreeWidget
|
||||
|
||||
@ -24,8 +24,8 @@ class MainWindow(QMainWindow):
|
||||
self.world = world
|
||||
self.setupCenterWidget() # 创建中间部分Panda3D
|
||||
self.setupMenus() # 创建菜单栏
|
||||
self.setupDockWindows()
|
||||
self.setupToolbar()
|
||||
self.setupDockWindows() # 可停靠窗口
|
||||
self.setupToolbar() # 工具栏
|
||||
self.connectEvents()
|
||||
|
||||
# 移动窗口到屏幕中央
|
||||
@ -126,12 +126,12 @@ class MainWindow(QMainWindow):
|
||||
self.leftDock = QDockWidget("层级", self)
|
||||
self.leftDock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
|
||||
self.treeWidget = CustomTreeWidget(self.world)
|
||||
self.treeWidget.setHeaderLabel("场景")
|
||||
self.world.setTreeWidget(self.treeWidget) # 设置树形控件引用
|
||||
self.leftDock.setWidget(self.treeWidget)
|
||||
self.leftDock.setMinimumWidth(300)
|
||||
self.addDockWidget(Qt.LeftDockWidgetArea, self.leftDock)
|
||||
|
||||
# self.leftDock.setMinimumWidth(300)
|
||||
self.addDockWidget(Qt.DockWidgetArea.LeftDockWidgetArea, self.leftDock)
|
||||
|
||||
|
||||
# 创建右侧停靠窗口(属性窗口)
|
||||
self.rightDock = QDockWidget("属性", self)
|
||||
self.rightDock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
|
||||
@ -139,13 +139,15 @@ class MainWindow(QMainWindow):
|
||||
# 创建属性面板的主容器和布局
|
||||
self.propertyContainer = QWidget()
|
||||
self.propertyContainer.setObjectName("PropertyContainer")
|
||||
self.propertyLayout = QFormLayout(self.propertyContainer)
|
||||
|
||||
self.propertyLayout = QVBoxLayout(self.propertyContainer)
|
||||
# self.propertyLayout = QFormLayout(self.propertyContainer)
|
||||
|
||||
# 添加初始提示信息
|
||||
tipLabel = QLabel("")
|
||||
tipLabel.setStyleSheet("color: gray;") # 使用灰色字体
|
||||
self.propertyLayout.addRow(tipLabel)
|
||||
|
||||
# self.propertyLayout.addRow(tipLabel)
|
||||
self.propertyLayout.addWidget(tipLabel)
|
||||
|
||||
# 创建滚动区域并设置属性
|
||||
self.scrollArea = QScrollArea()
|
||||
self.scrollArea.setWidgetResizable(True)
|
||||
@ -158,7 +160,8 @@ class MainWindow(QMainWindow):
|
||||
|
||||
# 设置属性面板到世界对象
|
||||
self.world.setPropertyLayout(self.propertyLayout)
|
||||
|
||||
|
||||
|
||||
# 创建脚本管理停靠窗口
|
||||
self.scriptDock = QDockWidget("脚本管理", self)
|
||||
self.scriptDock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
|
||||
@ -167,7 +170,8 @@ class MainWindow(QMainWindow):
|
||||
|
||||
# 将右侧停靠窗口设为标签形式
|
||||
self.tabifyDockWidget(self.rightDock, self.scriptDock)
|
||||
|
||||
|
||||
|
||||
# 创建底部停靠窗口(资源窗口)
|
||||
self.bottomDock = QDockWidget("资源", self)
|
||||
self.bottomDock.setAllowedAreas(Qt.BottomDockWidgetArea)
|
||||
|
||||
1569
ui/property_panel.py
1569
ui/property_panel.py
File diff suppressed because it is too large
Load Diff
@ -10,10 +10,10 @@
|
||||
|
||||
import os
|
||||
import re
|
||||
from PyQt5.QtWidgets import (QDialog, QVBoxLayout, QGroupBox, QHBoxLayout,
|
||||
QLineEdit, QPushButton, QLabel, QDialogButtonBox,
|
||||
QTreeView, QTreeWidget, QTreeWidgetItem, QWidget,
|
||||
QFileDialog, QMessageBox)
|
||||
from PyQt5.QtWidgets import (QDialog, QVBoxLayout, QGroupBox, QHBoxLayout,
|
||||
QLineEdit, QPushButton, QLabel, QDialogButtonBox,
|
||||
QTreeView, QTreeWidget, QTreeWidgetItem, QWidget,
|
||||
QFileDialog, QMessageBox, QAbstractItemView)
|
||||
from PyQt5.QtCore import Qt, QUrl
|
||||
from PyQt5.QtGui import QDrag, QPainter, QPixmap
|
||||
from PyQt5.sip import wrapinstance
|
||||
@ -310,10 +310,28 @@ class CustomTreeWidget(QTreeWidget):
|
||||
parent = wrapinstance(0, QWidget)
|
||||
super().__init__(parent)
|
||||
self.world = world
|
||||
self.setupUI() # 初始化界面
|
||||
|
||||
self.setupDragDrop() # 设置拖拽功能
|
||||
|
||||
self.setDragDropMode(QTreeWidget.InternalMove)
|
||||
|
||||
|
||||
def setupUI(self):
|
||||
"""初始化UI设置"""
|
||||
self.setHeaderHidden(True)
|
||||
# 启用多选和拖拽
|
||||
self.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
|
||||
self.setDropIndicatorShown(True)
|
||||
|
||||
def setupDragDrop(self):
|
||||
"""设置拖拽功能"""
|
||||
# 使用自定义拖拽模式
|
||||
self.setDragDropMode(QAbstractItemView.DragDropMode.InternalMove) # 或者使用 DragDrop
|
||||
self.setDefaultDropAction(Qt.DropAction.MoveAction)
|
||||
self.setDragEnabled(True)
|
||||
self.setAcceptDrops(True)
|
||||
self.setDragDropMode(QTreeWidget.InternalMove)
|
||||
|
||||
|
||||
def dropEvent(self, event):
|
||||
"""处理拖放事件"""
|
||||
# 获取拖动的项和目标项
|
||||
|
||||
Loading…
Reference in New Issue
Block a user