Просмотр исходного кода

修复最后页面的单元格右键问题

wzp 3 месяцев назад
Родитель
Сommit
a7a9c79b82
1 измененных файлов: 34 добавлений и 17 удалений
  1. 34
    17
      Front/main.py

+ 34
- 17
Front/main.py Просмотреть файл

@@ -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):

Загрузка…
Отмена
Сохранить