class MdiChild(QtGui.QTextEdit):
sequenceNumber = 1
def __init__(self):
super(MdiChild, self).__init__()
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.isUntitled = True
def newFile(self):
self.isUntitled = True
self.curFile = "document%d.txt" % MdiChild.sequenceNumber
MdiChild.sequenceNumber += 1
self.setWindowTitle(self.curFile + '[*]')
self.document().contentsChanged.connect(self.documentWasModified)
def documentWasModified(self):
self.setWindowModified(self.document().isModified())
此代码在创建新子窗口时将document1.txt显示为子窗口的标题并保持增量。子窗口的标题从document1.txt更改为document1.txt。*当我在QTextedit中更改文本时,如果我删除[]周围*,则在打开新窗口时显示document1.txt。*。所以我想知道在此代码中文档标题的[]的工作原理以及*如何附加到文档标题。
并且还请说出以下行的含义:
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
答案 0 :(得分:2)
正如docs
中所述如果使用windowModified机制,则窗口标题必须包含“[]”占位符,指示“”应显示的位置。通常,它应该出现在文件名后面(例如,“document1.txt [*] - 文本编辑器”)。如果windowModified属性为false(默认值),则只删除占位符。
现在关于self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
的第二个问题
WA_DeleteOnClose
清除已关闭文档的内存。