QPlainTextEdit проверка некоторого условия

#python #pyqt #pyqt5

Вопрос:

Я хочу создать свой собственный очень простой редактор файлов .txt. Как и в реальных редакторах, я хочу, чтобы, если вы измените файл и еще не сохраните его, имя файла начиналось с » * » (например, *some_text_file.txt).

Я думаю, что для этого я должен проверить QPlainTextEdit после загрузки файла в редактор и после того, как пользователь нажал кнопку «Сохранить». Но я не знаю, как проверить QPlainTextEdit без контроля пользователя, но после некоторых изменений. Или, может быть, есть другой способ сделать это. Итак, как это сделать?

Комментарии:

1. Под «именем файла» вы подразумеваете заголовок окна?

Ответ №1:

Вы могли бы использовать textChanged сигнал от QPlainTextEdit . Он указывает, когда изменился введенный текст. Видеть:

https://doc.qt.io/qt-5/qplaintextedit.html#textChanged

Грубо говоря, вы бы сделали следующее:

  • загрузите файл
  • отобразить имя файла без звездочки
  • подключите textChanged сигнал в слот (функцию), который добавит звездочку к имени файла
  • при нажатии кнопки Сохранить удалите звездочку

Если вы новичок в Qt, возможно, вам захочется прочитать о механизме сигналов и слотов Qt:

https://doc.qt.io/qt-5/signalsandslots.html

Комментарии:

1. Обратите внимание, что textChanged он запускается при каждом изменении текста и не учитывает измененное состояние документа, что может быть важно для операций отмены/повтора: ввод символа и его удаление-это не то же самое, что ввод символа и запуск undo() команды.