PyQt: Problema com asterisco na modificação em QPlainTextEdit
Pergunta
Eu estou tendo um problema com um QPlainTextEdit. Eu quero o "conteúdo foram modificados" asterisco para aparecer na barra de título sempre que o conteúdo foram modificados.
No exemplo abaixo, escreva algumas letras. O asterisco aparece como deveria. Pressione Ctrl + S, o asterisco desaparece como deveria. Mas, então, se você digitar mais algumas letras ... porque não o asterisco aparecer novamente?
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_()
Solução
Nunca mente, percebi isso. O problema era que no método save Eu deveria ter sido chamando self.document (). SetModified (Falso) em vez de window.setWindowModified (Falso)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow