|
@@ -16,7 +16,8 @@
|
16
|
16
|
import time
|
17
|
17
|
|
18
|
18
|
from PySide6.QtTest import QTest
|
19
|
|
-from PySide6.QtWidgets import QFileDialog, QWidget, QVBoxLayout, QTreeWidget, QApplication, QTreeWidgetItem, QMessageBox
|
|
19
|
+from PySide6.QtWidgets import QFileDialog, QWidget, QVBoxLayout, QTreeWidget, QApplication, QTreeWidgetItem, \
|
|
20
|
+ QMessageBox, QItemDelegate, QLineEdit
|
20
|
21
|
from PySide6.QtCore import Signal, Qt, Slot, QObject
|
21
|
22
|
from PySide6.QtSql import QSqlTableModel, QSqlDatabase
|
22
|
23
|
from watchdog.observers import Observer
|
|
@@ -44,8 +45,6 @@ from Front.back.Program_Run.utils import resource_path # 从 utils.py 导入 re
|
44
|
45
|
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
|
45
|
46
|
sys.path.append(project_root)
|
46
|
47
|
|
47
|
|
-
|
48
|
|
-
|
49
|
48
|
os.environ["QT_FONT_DPI"] = "96" # FIX Problem for High DPI and Scale above 100%
|
50
|
49
|
|
51
|
50
|
# SET AS GLOBAL WIDGETS
|
|
@@ -496,6 +495,21 @@ class ElTree1(QWidget):
|
496
|
495
|
main_window.refresh_tree()
|
497
|
496
|
|
498
|
497
|
|
|
498
|
+class CustomLineEdit(QLineEdit):
|
|
499
|
+ def __init__(self, parent=None):
|
|
500
|
+ super().__init__(parent)
|
|
501
|
+
|
|
502
|
+ def contextMenuEvent(self, event):
|
|
503
|
+ # 不执行任何操作,屏蔽右键菜单
|
|
504
|
+ pass
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+class CustomItemDelegate(QItemDelegate):
|
|
508
|
+ def createEditor(self, parent, option, index):
|
|
509
|
+ editor = CustomLineEdit(parent)
|
|
510
|
+ return editor
|
|
511
|
+
|
|
512
|
+
|
499
|
513
|
# class DatabaseChangeHandler(FileSystemEventHandler):
|
500
|
514
|
# def __init__(self, main_window):
|
501
|
515
|
# self.main_window = main_window
|
|
@@ -533,6 +547,12 @@ class MainWindow(QMainWindow):
|
533
|
547
|
# 设置 datainfo 页面的焦点策略,使其能够捕获键盘事件
|
534
|
548
|
widgets.datainfo.setFocusPolicy(Qt.StrongFocus)
|
535
|
549
|
widgets.datainfo.keyPressEvent = self.datainfo_keyPressEvent
|
|
550
|
+ # 初始化 item_index 和 oritext
|
|
551
|
+ self.item_index = None
|
|
552
|
+ self.oritext = None
|
|
553
|
+ # 设置自定义的 QItemDelegate 给 QTableView
|
|
554
|
+ self.custom_delegate = CustomItemDelegate(self)
|
|
555
|
+ self.ui.resultTableView1.setItemDelegate(self.custom_delegate)
|
536
|
556
|
# 是否使用系统自带标题栏 True是不使用,False使用
|
537
|
557
|
# ///////////////////////////////////////////////////////////////
|
538
|
558
|
Settings.ENABLE_CUSTOM_TITLE_BAR = True
|
|
@@ -1108,25 +1128,22 @@ class MainWindow(QMainWindow):
|
1108
|
1128
|
self.ui.resultTableView1.viewport().installEventFilter(self)
|
1109
|
1129
|
|
1110
|
1130
|
def eventFilter(self, source, event):
|
1111
|
|
- global item_index
|
1112
|
|
- global oritext
|
1113
|
1131
|
if event.type() == QEvent.MouseButtonDblClick:
|
1114
|
1132
|
# 获取双击的单元格
|
1115
|
|
- item_index = self.ui.resultTableView1.indexAt(event.position().toPoint())
|
1116
|
|
- if item_index.isValid():
|
|
1133
|
+ self.item_index = self.ui.resultTableView1.indexAt(event.position().toPoint())
|
|
1134
|
+ if self.item_index.isValid():
|
1117
|
1135
|
# 保留原先的内容
|
1118
|
|
- ori = self.ui.resultTableView1.model().itemData(item_index)
|
1119
|
|
- oritext = ori[0]
|
|
1136
|
+ ori = self.ui.resultTableView1.model().itemData(self.item_index)
|
|
1137
|
+ self.oritext = ori[0] if 0 in ori else ''
|
1120
|
1138
|
# 清空单元格内容
|
1121
|
|
- # self.ui.resultTableView1.setItem(index.row(), index.column(), QTableWidgetItem(""))
|
1122
|
|
- self.ui.resultTableView1.model().setData(item_index, '')
|
1123
|
|
- # # 进入编辑模式
|
1124
|
|
- # self.ui.resultTableView1.edit(index)
|
|
1139
|
+ self.ui.resultTableView1.model().setData(self.item_index, '')
|
|
1140
|
+
|
1125
|
1141
|
if event.type() == QEvent.MouseButtonPress:
|
1126
|
|
- #检查是否为空
|
1127
|
|
- if len(self.ui.resultTableView1.model().itemData(item_index)[0]) == 0:
|
1128
|
|
- #自动填充原来的内容
|
1129
|
|
- self.ui.resultTableView1.model().setData(item_index, oritext)
|
|
1142
|
+ # 检查是否为空
|
|
1143
|
+ if self.item_index is not None and len(self.ui.resultTableView1.model().itemData(self.item_index)[0]) == 0:
|
|
1144
|
+ # 自动填充原来的内容
|
|
1145
|
+ self.ui.resultTableView1.model().setData(self.item_index, self.oritext)
|
|
1146
|
+
|
1130
|
1147
|
return super().eventFilter(source, event)
|
1131
|
1148
|
|
1132
|
1149
|
def add_Dataclicked(self):
|