PyQt4:如何修改子窗口的标题

时间:2014-03-30 09:19:15

标签: python pyqt4 document title mdi

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)

1 个答案:

答案 0 :(得分:2)

正如docs

中所述

如果使用windowModified机制,则窗口标题必须包含“[]”占位符,指示“”应显示的位置。通常,它应该出现在文件名后面(例如,“document1.txt [*] - 文本编辑器”)。如果windowModified属性为false(默认值),则只删除占位符。

现在关于self.setAttribute(QtCore.Qt.WA_DeleteOnClose)的第二个问题 WA_DeleteOnClose清除已关闭文档的内存。