Pregunta

Tengo un problema con un QPlainTextEdit. Quiero que el "contenido haya sido modificado" aparecerá un asterisco en la barra de título cada vez que se haya modificado el contenido.

En el siguiente ejemplo, escriba algunas letras. El asterisco aparece como debería. Presiona Ctrl + S, el asterisco desaparece como debería. Pero luego, si escribe algunas letras más ... ¿por qué no vuelve a aparecer el asterisco?

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_()
¿Fue útil?

Solución

No importa, lo descubrí. El problema era que en el método de guardar debería haber llamado self.document (). SetModified (False) en lugar de window.setWindowModified (False)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top