浏览代码

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

wzp 9 个月前
父节点
当前提交
a7a9c79b82
共有 1 个文件被更改,包括 34 次插入17 次删除
  1. 34
    17
      Front/main.py

+ 34
- 17
Front/main.py 查看文件

16
 import time
16
 import time
17
 
17
 
18
 from PySide6.QtTest import QTest
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
 from PySide6.QtCore import Signal, Qt, Slot, QObject
21
 from PySide6.QtCore import Signal, Qt, Slot, QObject
21
 from PySide6.QtSql import QSqlTableModel, QSqlDatabase
22
 from PySide6.QtSql import QSqlTableModel, QSqlDatabase
22
 from watchdog.observers import Observer
23
 from watchdog.observers import Observer
44
 project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
45
 project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
45
 sys.path.append(project_root)
46
 sys.path.append(project_root)
46
 
47
 
47
-
48
-
49
 os.environ["QT_FONT_DPI"] = "96"  # FIX Problem for High DPI and Scale above 100%
48
 os.environ["QT_FONT_DPI"] = "96"  # FIX Problem for High DPI and Scale above 100%
50
 
49
 
51
 # SET AS GLOBAL WIDGETS
50
 # SET AS GLOBAL WIDGETS
496
             main_window.refresh_tree()
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
 # class DatabaseChangeHandler(FileSystemEventHandler):
513
 # class DatabaseChangeHandler(FileSystemEventHandler):
500
 #     def __init__(self, main_window):
514
 #     def __init__(self, main_window):
501
 #         self.main_window = main_window
515
 #         self.main_window = main_window
533
         # 设置 datainfo 页面的焦点策略,使其能够捕获键盘事件
547
         # 设置 datainfo 页面的焦点策略,使其能够捕获键盘事件
534
         widgets.datainfo.setFocusPolicy(Qt.StrongFocus)
548
         widgets.datainfo.setFocusPolicy(Qt.StrongFocus)
535
         widgets.datainfo.keyPressEvent = self.datainfo_keyPressEvent
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
         # 是否使用系统自带标题栏  True是不使用,False使用
556
         # 是否使用系统自带标题栏  True是不使用,False使用
537
         # ///////////////////////////////////////////////////////////////
557
         # ///////////////////////////////////////////////////////////////
538
         Settings.ENABLE_CUSTOM_TITLE_BAR = True
558
         Settings.ENABLE_CUSTOM_TITLE_BAR = True
1108
         self.ui.resultTableView1.viewport().installEventFilter(self)
1128
         self.ui.resultTableView1.viewport().installEventFilter(self)
1109
 
1129
 
1110
     def eventFilter(self, source, event):
1130
     def eventFilter(self, source, event):
1111
-        global item_index
1112
-        global oritext
1113
         if event.type() == QEvent.MouseButtonDblClick:
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
         if event.type() == QEvent.MouseButtonPress:
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
         return super().eventFilter(source, event)
1147
         return super().eventFilter(source, event)
1131
 
1148
 
1132
     def add_Dataclicked(self):
1149
     def add_Dataclicked(self):

正在加载...
取消
保存