在QTableWidg中编辑单元格时不显示旧值

2024-05-15 15:06:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个基本的QTableWidget,使用以下python代码创建:

from silx.gui import qt
app = qt.QApplication([])
qtw = qt.QTableWidget()
qtw.show()
qtw.setColumnCount(8)
qtw.setRowCount(7)
app.exec_()

from silx.gui import qt行只是一个包装器,它查找已安装的qt包装器(PyQt4、PyQt5或PySide)并展平qt名称空间。在

当我编辑一个单元格时,结果表有一个奇怪的行为:正如预期的那样,当我双击单元格时,旧文本会高亮显示,但不寻常的行为是,在我键入时,旧文本仍然可见,新文本与旧文本重叠,直到我按enter键或单击另一个单元格为止。在

旧的文本一开始我就想消失。我知道这是可能的,因为我有一个程序的例子,它具有qTableWidget和我想要的行为。在

但是我找不到那个程序中单元格编辑行为的改变。我该怎么做?在

“垃圾邮件”和“鸡蛋”叠加的例子。在

[example of "spam" and "eggs" overlayed[1]

编辑:没有包装器业务的代码示例

^{pr2}$

对于PyQt4,使用此导入(同时删除print(qVersion())行):

from PyQt4.QtGui import QApplication, QTableWidget

Tags: 代码from文本import程序app编辑gui
3条回答

我的方法:

class MyDelegate(QItemDelegate):

    def setEditorData(self,editor,index):
        editor.setAutoFillBackground(True)
        editor.setText(index.data().toString())

在我的例子中,当我将QWidgetTable的背景色设置为transparent时,就会出现上述问题。当我删除设置时,不再有旧数据覆盖新数据。 希望有帮助。在

您可以尝试将QTableWidget cellClicked(int row, int column)发出的信号与为清除条目而创建的插槽相连接。
http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html#connecting-disconnecting-and-emitting-signals

相关问题 更多 >