【问题标题】:PyQt: Trouble with asterisk on modification in QPlainTextEditPyQt:在 QPlainTextEdit 中修改星号时出现问题
【发布时间】:2010-12-11 02:01:26
【问题描述】:

我遇到了 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_()

【问题讨论】:

    标签: python qt qt4 pyqt pyqt4


    【解决方案1】:

    没关系,想通了。问题是在保存方法中我应该调用 self.document().setModified(False) 而不是 window.setWindowModified(False)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多