Question

Je rencontre un problème avec un QPlainTextEdit. Je souhaite que le " contenu ait été modifié " un astérisque apparaît dans la barre de titre chaque fois que le contenu a été modifié.

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 ne réapparaît-il pas?

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_()
Était-ce utile?

La solution

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top