2024-04-28 08:10:55 发布
网友
尝试在正在编辑的QTableView中捕获行时遇到问题,但已被取消。例如,如果我在QTableView中编辑一个新插入的行,并且按下了ESC、up/down箭头键,那么我需要删除该行,因为(在我看来)已经被取消了。如果用户单击离开行,也保持true。我真的不能发布任何代码,因为我不知道如何实现这样的东西。有什么想法吗?在
我有一个例子,我相信,是你想要的(至少对于按键问题)。从那里你可以做一些类似的点击问题。在
我的解决方案使用一个自定义的QItemDelegate重写eventFilter方法。它还使用了一个朴素的模型(因为您希望使用QTableView),在模型上使用layoutChanged信号是由于示例的功能,请根据需要阅读文档以获得更合适的添加/删除数据特性。在
QItemDelegate
eventFilter
layoutChanged
希望有帮助。在
示例用户界面:
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'test.ui', # licensing of 'test.ui' applies. # # Created: Wed Nov 7 16:10:12 2018 # by: pyside2-uic running on PySide2 5.11.0 # # WARNING! All changes made in this file will be lost! from PySide2 import QtCore, QtGui, QtWidgets class Ui_Test(object): def setupUi(self, Test): Test.setObjectName("Test") Test.resize(538, 234) self.horizontalLayout = QtWidgets.QHBoxLayout(Test) self.horizontalLayout.setObjectName("horizontalLayout") self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.tableView = QtWidgets.QTableView(Test) self.tableView.setObjectName("tableView") self.gridLayout.addWidget(self.tableView, 0, 0, 1, 1) self.addRow = QtWidgets.QPushButton(Test) self.addRow.setObjectName("addRow") self.gridLayout.addWidget(self.addRow, 0, 1, 1, 1) self.horizontalLayout.addLayout(self.gridLayout) self.retranslateUi(Test) QtCore.QMetaObject.connectSlotsByName(Test) def retranslateUi(self, Test): Test.setWindowTitle(QtWidgets.QApplication.translate("Test", "Dialog", None, -1)) self.addRow.setText(QtWidgets.QApplication.translate("Test", "add row", None, -1))
实际涉及的类(我使用PySide2):
我有一个例子,我相信,是你想要的(至少对于按键问题)。从那里你可以做一些类似的点击问题。在
我的解决方案使用一个自定义的
QItemDelegate
重写eventFilter
方法。它还使用了一个朴素的模型(因为您希望使用QTableView),在模型上使用layoutChanged
信号是由于示例的功能,请根据需要阅读文档以获得更合适的添加/删除数据特性。在希望有帮助。在
示例用户界面:
实际涉及的类(我使用PySide2):
^{pr2}$相关问题 更多 >
编程相关推荐