PyQt4:如何在子窗口修改时更改标题
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 显示为子窗口的标题,并且每次创建新窗口时标题会不断增加。当我在 QTextedit 中修改文本时,子窗口的标题会从 document1.txt 变成 document1.txt.*。如果我把 * 周围的 [] 去掉,打开新窗口时标题会显示为 document1.txt.*。所以我想知道在这段代码中,[] 对文档标题的作用是什么,以及 * 是怎么加到文档标题上的。
还有,请告诉我以下这行代码的意思:
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
1 个回答
2
如在文档中提到的,
如果你使用了窗口修改机制,窗口标题里必须包含一个"[]"的占位符,这个占位符表示''应该出现的位置。通常,它应该紧跟在文件名后面,比如说“document1.txt[*] - 文本编辑器”。如果窗口修改属性是false(默认值),那么这个占位符就会被简单地去掉。
至于你第二个问题关于self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
,
WA_DeleteOnClose
的作用是关闭文档时清理内存。