0

QPlainTextEdit に問題があります。コンテンツが変更されるたびに、「コンテンツが変更されました」というアスタリスクがタイトル バーに表示されるようにします。

以下の例では、いくつかの文字を入力します。アスタリスクが表示されます。Ctrl+S を押すと、アスタリスクが消えます。しかし、さらに数文字入力すると... アスタリスクが再び表示されないのはなぜですか?

import os, sys

from PyQt4 import QtGui, QtCore

class MyTextEdit(QtGui.QPlainTextEdit):  
    def __init__(self):
        QtGui.QPlainTextEdit.__init__(self)     

        save_seq = QtGui.QKeySequence.Save
        self.save_shortcut = QtGui.QShortcut(save_seq, self, self.save)

        QtCore.QObject.connect(self, 
                               QtCore.SIGNAL("modificationChanged(bool)"),
                               self.on_change)

    def on_change(self, is_modified):
        print "on_change"
        window.setWindowModified(is_modified)

    def save(self):
        window.setWindowModified(False)
#


app = QtGui.QApplication(sys.argv)
window = QtGui.QMainWindow()
edit = MyTextEdit()
window.setCentralWidget(edit)
window.setWindowTitle("None [*]")
window.show()
app.exec_()
4

1 に答える 1

1

気にしないで、それを理解しました。問題は、save メソッドで window.setWindowModified(False) の代わりに self.document().setModified(False) を呼び出すべきだったことです。

于 2009-10-29T00:37:45.217 に答える