2009-10-28 8 views
0

J'ai un problème avec QPlainTextEdit. Je veux que l'astérisque "contenu a été modifié" apparaisse dans la barre de titre chaque fois que le contenu a été modifié.PyQt: Problème avec un astérisque lors d'une modification dans QPlainTextEdit

Dans l'exemple ci-dessous, tapez quelques lettres. L'astérisque apparaît comme il se doit. Appuyez sur Ctrl + S, l'astérisque disparaît comme il se doit. Mais si vous tapez quelques lettres de plus ... pourquoi l'astérisque n'apparaît-il pas à nouveau?

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_() 

Répondre

1

Peu importe, compris. Le problème était que dans la méthode save j'aurais dû appeler self.document(). SetModified (False) au lieu de window.setWindowModified (False)